Data-driven customizable payroll element template

ABSTRACT

Various techniques can be used to customize payroll element templates. One method involves accessing a predefined payroll element template; receiving a template modification value, which is input by a payroll user in response to a question in a predefined payroll questionnaire; customizing the predefined payroll element template, based upon the template modification value, to create a customized payroll element template; and storing the customized payroll element template.

RELATED APPLICATIONS

This application claims the domestic benefit under Title 35 of the United States Code §119(e) of U.S. Provisional Patent Application Ser. No. 61/384,257, entitled “Global Element Template Generation,” filed Sep. 18, 2010, and naming Suthar Sivasubramaniam as the inventor, which is hereby incorporated by reference in its entirety and for all purposes as if completely and fully set forth herein.

FIELD OF THE INVENTION

This invention relates to computing and, more particularly, to processing payroll information in a computing system.

DESCRIPTION OF RELATED ART

Historically, programs have been written to provide specific functionality to specific customers. These programs were hard-coded to include this functionality, as well as any baseline data required to support that functionality. Whenever a customer needed new functionality or new baseline data, the program would need to be updated by a programmer. As companies have become more globalized, this historical approach has proven inflexible. For example, if each customer in a set of customers for a particular program has an office in a different localization (e.g., is in a different country with its own tax structures and other laws that affect how employee compensation is calculated and/or is part of a different employer with its own compensation structure), each localization may require different functionality and baseline data. It is impractical and expensive to obtain customized payroll programs specifically tailored to each localization.

SUMMARY

Various systems and methods for allowing users to customize payroll element templates are disclosed. In one embodiment, a method involves accessing a predefined payroll element template; receiving a template modification value, which is input by a payroll user in response to a question in a predefined payroll questionnaire; customizing the predefined payroll element template, based upon the template modification value, to create a customized payroll element template; and storing the customized payroll element template.

A system can include one or more processors and memory coupled to the one or more processors. The memory stores program instructions executable to perform a method like the one described above. Similarly, such program instructions can be stored upon a computer readable storage medium.

The foregoing is a summary and thus contains, by necessity, simplifications, generalizations and omissions of detail; consequently those skilled in the art will appreciate that the summary is illustrative only and is not intended to be in any way limiting. Other aspects, inventive features, and advantages of the present invention, as defined solely by the claims, will become apparent in the non-limiting detailed description set forth below.

BRIEF DESCRIPTION OF THE DRAWINGS

A more complete understanding of the present invention may be acquired by referring to the following description and the accompanying drawings, in which like reference numbers indicate like features.

FIG. 1 illustrates a block diagram of a system for customizing payroll element templates, according to one embodiment.

FIG. 2 is a flowchart of a method of customizing payroll element templates, according to one embodiment.

FIG. 3A illustrates an example of a user interface screen for creating a customized payroll element template, according to one embodiment.

FIG. 3B illustrates an example of a user interface screen for entering basic information to customize a payroll element template, according to one embodiment.

FIG. 3C illustrates an example of another user interface screen for entering basic information to customize a payroll element template, according to one embodiment.

FIG. 3D illustrates an example of yet another user interface screen for entering basic information to customize a payroll element template, according to one embodiment.

FIG. 3E illustrates an example of a user interface screen for entering detailed information to customize a payroll element template, according to one embodiment.

FIG. 3F illustrates an example of a user interface screen for entering eligibility information to customize a payroll element template, according to one embodiment.

FIG. 3G illustrates an example of a user interface screen for reviewing customization information provided to customize a payroll element template, according to one embodiment.

FIG. 3H illustrates an example of a user interface screen for submitting customization information, according to one embodiment.

FIG. 3J illustrates an example of a user interface screen for viewing a summary of a customized payroll element template, according to one embodiment.

FIG. 4 is block diagram of a payroll template logical data model, according to one embodiment.

FIG. 5 illustrates an example of a payroll template physical data model, according to one embodiment.

FIG. 6 is a block diagram of a computing device, illustrating how a payroll module that creates customized payroll element templates can be implemented in software in at least one embodiment.

While the invention is susceptible to various modifications and alternative forms, specific embodiments of the invention are provided as examples in the drawings and detailed description. It should be understood that the drawings and detailed description are not intended to limit the invention to the particular form disclosed. Instead, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the invention as defined by the appended claims.

DETAILED DESCRIPTION

FIG. 1 illustrates a block diagram of a system for customizing payroll element templates. As illustrated, the system includes a storage device 100 that stores one or more predefined templates 110, one or more customized templates 112, and one or more objects 114. Storage device 100 is coupled to a payroll module 150, which includes a template processing module 152, a template customization wizard module 155, a set of one or more template customization values 157, and a user interface 154. Payroll module 150 can be coupled to a display device 180, which can display a payroll user interface window 182.

Each predefined template 110 is a data structure that includes a basic payroll element structure, including one or more records and, if appropriate, relationships between those records (e.g., such as hierarchical parent-child relationships), as well as one or more rules. The rules control the configuration of customized templates derived from the basic payroll element structure, as well as the configuration of payroll objects instantiated from the predefined template and/or customized templates derived from the predefined template. A rule can control which of the records present in the basic payroll element structure should be included in the customized template or object or the default value of such a record. Rules can also dynamically control the configuration process, as explained in more detail below. In some embodiments, rules can be used to provide MLS (MultiLanguage Support). Rules can also control whether resulting objects created from customized template can subsequently be modified or deleted (e.g., such rules can specify whether a resulting object should be read-only).

A predefined template can be an indivisible entity or it can be divided into patterns. For example, in one embodiment, templates can be divided into appropriate functional areas. Each of the Functional Area can have an associated patterns, and a single pattern among them can be used when processing the predefined template.

In one embodiment, the software vendor that provides customers with payroll module 150 provides a variety of predefined templates that correspond to basic payroll elements. Such payroll elements can include formulas, earnings (e.g., bonuses, salary), deductions, and the like. In one embodiment, payroll elements are divided into several generic types of elements, each of which is represented by a predefined template. For example, these generic predefined templates could define flat amount elements, days times (x) rate elements, hours x rate elements, percentage of earnings elements, flat amount deduction elements, percentage deduction elements, professional body elements, and union deduction elements. Examples of these generic predefined templates are provided below. These predefined templates can then be customized to define more specific types of payroll elements.

The customization process can be used to customize a generic payroll element defined by a predefined template for use in a particular localization. A localization can be defined based upon an appropriate legislative entity (e.g., a particular country, state, or other legislative entity that defines rules and/or regulations that affect how payroll is processed in the localization) and/or an appropriate corporate entity (e.g., a particular company may have different payroll rules than another company).

A customized template 112 is a data structure that is derived from a predefined template 110, based upon one or more template customization values. A customized template can be indirectly derived from a predefined template by virtue of being derived from another customized template. In some embodiments, a user can view the interrelationships between predefined and customized templates in a user interface that displays (e.g., in a tree structure) a customized template as a child of the appropriate template (predefined or customized) from which the customized template is derived.

An object 114 is an instance of a payroll element that has been instantiated based upon a template (either a predefined template 110 or a customized template 112). The records included in an object have been assigned values. These values can either be default values (e.g., as defined in the template, either predefined or customized, from which the object was instantiated) or user-provided values. In some embodiments, a user can view the interrelationships between an object and the predefined and/or customized template(s) from which that object is derived in a user interface that displays (e.g., in a tree structure) the object as a child of the appropriate template (predefined or customized) from which the object is derived.

Payroll module 150 is configured to perform payroll processing. The elements of payroll module 150 shown in FIG. 1 are those used to customize predefined templates. As shown, payroll module 150 includes a template customization wizard module 155. Template customization wizard module 155 is configured to receive user input (e.g., from a user such as a human user or other application) configuring a predefined template 110 (e.g., via user interface 154) and to store (e.g., in local memory or other storage usable by payroll module 150) this user input as one of template modification values 157. Template processing module 152 then uses template modification values 157, in conjunction with the predefined template 110 being configured, to generate a customized template 112. Template processing module 152 then stores the customized template in storage 100 as one of customized templates 112.

As noted above, a predefined template includes one or more rules. Each of these rules can have several corresponding options (e.g., true or false, value options, or the like). By selecting an option, a user can customize the predefined template to generate a customized template. Template customization wizard module 155 is configured to allow a user to select a predefined template to customize (e.g., via user interface 154). Template customization wizard module 155 then accesses the selected predefined template to identify the rule(s) included in that predefined template. Based upon these rules, template customization wizard module 155 dynamically creates a questionnaire to be presented to the user (e.g., in payroll user interface window 182 by user interface 154). Examples of the questions that can be included in such a questionnaire are shown in FIGS. 3A-3J.

Each question within the questionnaire can correspond to one of the rules in the predefined template. Additionally, each question can indicate two or more options that are selectable in response to the question. When a user selects an option, information indicating that selection is provided to template customization wizard module 155 for storage as a template modification value. These values control the configuration and functionality of an object instantiated from the customized template. It is noted that questions can be reused among various templates. For example, many different templates can include the same rule, and template customization wizard module 155 can be configured to display the same question each time that rule is encountered within a template.

As a user creates new customized templates, new questionnaires corresponding to the specific rules included in the new templates are also created. For example, when template customization wizard module 155 accesses a customized template, the questionnaire generated from the rules in that customized template can vary from the questionnaire that would be generated for the predefined template from which the customized template is derived. Thus, different localizations can also customize questionnaires.

The above technique for customizing predefined templates provides a data-driven approach, since customization can be performed by simply providing data (the responses to the questions in the questionnaire) to the template customization wizard module. This means that a user can create customized templates without needing to update any of the underlying code that is used to implement payroll module 150.

While the above example has focused on customizable templates for use in creating customized payroll elements, it is noted that other embodiments may provide customizable templates for other types of elements. For example, similarly structured templates and modules for customizing those templates could be used in systems that provide product configuration, human resources management, compensation management, support for multiple languages in other systems, and the like.

Similarly, while the above example has focused on a system in which a user customizes a predefined template via a graphical user interface such as payroll user interface window 182, other embodiments may receive this user input via other interfaces, such as a service (e.g., a web service) that another application can call to access an application programming interface (API) provided by payroll module 150, a command line interface (CLI) accessed by a human user or other program, or the like.

Payroll user interface window 182 can be part of a graphical user interface (GUI) or command line interface (CLI) provided by an application that includes payroll module 150. In some embodiments, the application can be a web-based application that users interact with via a web browser, and thus payroll user interface window 182 can be a web browser or other client and payroll module 150 can be part of a web server or configured to provide the information usable to generate payroll user interface window 182 to such a web server for inclusion in web content being sent to web clients.

Storage device 100 provides persistent data storage, such that data stored on such a storage device will remain stored even after the storage device is powered off. Such a storage device can be, for example, a hard disk, a compact disc (CD), a digital versatile disc (DVD), or other mass storage device, or a storage system (e.g., a redundant array of independent disks (RAID) system or an optical storage jukebox) that includes an array of such storage devices. Such a storage device can also be a virtual or logical storage device that is implemented on such physical storage devices and/or storage systems. For example, such a storage device can be a logical volume that is implemented on a RAID storage system. Additionally, such a storage device can include one or more storage devices. A storage device can also include one or more types of storage media, including solid state media (e.g., Flash drives), optical media (e.g., CDs and DVDs), and magnetic media (e.g., hard disks or magnetic tape). In some embodiments, such storage devices can be implemented using cloud storage, in which the storage device is a logical storage device to which physical storage device(s) are allocated on an as-needed and/or as-contracted basis.

Display device 180 is configured to display graphical and/or textual information to a user. A display device can include an output-only device such as a cathode ray tube (CRT), liquid crystal display (LCD), or plasma monitor. Alternatively, a display device such as a touch screen display can provide both input and output functionality, allowing a user to modify objects and/or object presentation directly via the display device.

Display device 180, hierarchical data interface 150, and storage 100 can be coupled directly (e.g., via a bus, local wireless link, or other appropriate interconnect) or indirectly (e.g., via a network). In one embodiment, these elements are each coupled by one or more networks, which may include a WAN (Wide Area Network), such as the Internet, one or more LANs (Local Area Networks), and/or one or more SANs (Storage Area Networks).

FIG. 2 is a flowchart of a method of customizing payroll element templates. This method can be performed by various components of a payroll module such as payroll module 150 of FIG. 1.

The method begins at 200, when user input selecting a template is received. This template is either a predefined template or a customized template derived from a predefined template. This template can be customized using the remaining operations of FIG. 2. An object can be instantiated from the template using similar operations that set values for each of records included in the template.

At 210, a question in a questionnaire associated with the selected template is displayed or otherwise provided to the user. The questionnaire is a dynamically generated set of questions that is based upon the rules included within the selected template. Each question is based upon a respective rule in the template.

In response to the question, user input is received, as indicated at 220. If the user input is a record exclusion value (e.g., a value that will determine whether a particular record in a template is to be excluded from the customized template), the payroll module will store information indicating that the appropriate record(s) should be excluded (or not excluded) from the customized template, as shown at 230. If the record to be excluded is a parent to one or more other records in a hierarchical relationship, those child records should also be excluded.

If the user input is a default value, the payroll module will store information indicating the default value of the appropriate record(s) in the customized template, as indicated at 240. In some embodiments, certain default values may imply default values of one or more other records, and thus those implied default values may also be identified in the information stored at 240.

If the user input is a questionnaire exclusion value, the payroll module will store information indicating that another question in the questionnaire should be excluded (or not excluded) from the current customization session, as indicated at 250. For example, if certain questions only apply to certain scenarios, and the user input indicates that those scenarios are not applicable, the corresponding questions for those scenarios can be excluded from the current questionnaire.

If there are more questions remaining in the questionnaire (as modified, if needed, by operation 250), the next question can be displayed at 210. Once all questions have been answered, the payroll module creates a customized template based upon the selected template and the information saved at 230 and 240, as indicated at 270.

Certain questions may not be displayed to the user. Instead, the answers to these questions may be received during other operations in the customization process. For example, the answer to a question about the type of currency may be obtained based upon user selection of a legislative data group. In that case, the type of currency would be the type appropriate for the legislative data group. Thus, some questions (and their corresponding rules) can be considered to be hidden, since these questions are not explicitly presented as part of the questionnaire, even though the resulting template modification values obtained in response to these hidden questions can be used to customize the template.

The following rules provide an example of the rules that can be included in various predefined payroll element templates: Reporting Name, Output Currency (can be a hidden question whose value is based upon the selected legislative data group), specify currency (can be a hidden question whose value is based upon the selected legislative data group), chosen classification, chosen secondary classification, and effective date (can be a hidden question whose value is based on the date of the session to customize the predefined template).

Certain rules can be used to ascertain the duration of an employee's eligibility for an element. For example, a rule can correspond to the question “All eligible employees automatically receive this element?” and the possible response values can be selected from yes or no. Similar duration questions can include “When does employee eligibility begin?” (default value=hire date); “When does employee eligibility terminate?” (default=final close date); and the like.

Certain rules can be used to configure a calculation. For example, questions corresponding to these rules can ask “How do you want derive the calculation?” (value=Entered Value/Pay Source/Balance; default value=Entered Value); “Time Definition associated with the derivation?” (value=Annual/Monthly/Weekly/Daily/Hourly/Periodic; default value=Annual); “Is the value subject to full time calculation?” (value=Yes/No/Yes—Excluding Hourly Rates; default value=Yes—Excluding Hourly Rates); “Select the Pay Source” (value=Input Value/Element Name/Spinal Point/Grade Rate/Deduction Information Repository; excluded=Calculation Source (NOT Pay Source)); “Which Input Value?”; “Calculation Type (Percentage or Factor)?” (value=percentage/factor; default=percentage;); “Calculation Value?”; “Which Spinal Point?”, “Which Grade Rate?”, Deduction Information Repository?”, “Which Balance?”, and the like.

Certain rules will be excluded by the answers given to questions corresponding to other rules. For example, certain rules may only apply in certain situations. If an answer to a prior question excludes those situations, there is no need to display the rules that apply to those situations to the user.

Some rules determine how other rules will be processed. For example, questions such as “At which level should this be attached?” (value=Payroll Relationship Level/Contract Level/Assignment Level), “Recurring, or requires explicit entry each payroll period?” (value=Automatically recur/Entered each payroll period; default value=Entered each payroll period); “Process only once in each payroll?”; “Is more than one entry of this earning allowed for an employee in a pay period?”; “Separate or joint processing?”; “Which deductions should be processed?”; “When should this deduction start?”; “How to derive the deduction when an earnings threshold has been reached?”; “Subject to Employer Liabilities?”; and the like. Additional processing rules can correspond to questions such as “Overrides allowed for this element?”; “Subject to Proration?”; “Subject to Retrospective changes?”; “Used to calculate the gross amount from a specified net amount?”; “Processing Stop when the Total is reached?”; “Reduce regular earnings?”; and the like.

FIG. 3A illustrates an example of a user interface screen for creating a customized payroll element template. As shown, the selection of the appropriate template will be based on the user's choice of a Legislative Data Group (LDG) and a Classification from respective dropdown menus. In various embodiments, information usable to select a predefined template can include: Name (of the user's LDG); Reporting Name; Template Description; Input Currency (which may default to the local currency detected based upon the LDG); Primary Classification; Secondary Classification; Effective Start Date (default to session date); Element Template Type (e.g. Basic, Court Orders, Professional Body, etc); Calculation Rule; and the like. In one embodiment, earnings classifications can include Information, Earnings, Supplemental Earnings, Taxable Benefits, Direct Payment, Employer Charges, and the like. Deductions classifications can include Pre-Statutory Deductions, Tax Deductions, Social Insurance Deductions, Involuntary Deductions, Voluntary Deductions, and the like.

FIG. 3B illustrates an example of a user interface screen for entering basic information to customize a payroll element template. As shown, a user can enter text for certain questions, such as “Name” and “Reporting Name.” The user can select options from a pull down menu in response to other questions, such as “Country.” Other questions can be answered by selecting a radio button, such as those in the “Termination and Recurring” section of this page.

FIG. 3C illustrates an example of another user interface screen for entering basic information to customize a payroll element template. This screen indicates how certain questions can be answered by selecting checkboxes. The values obtained in response to these questions can be used to include checked records and exclude unchecked records from the resulting customized template.

FIG. 3D illustrates an example of yet another user interface screen for entering basic information to customize a payroll element template. FIG. 3E illustrates an example of a user interface screen for entering detailed information to customize a payroll element template. FIG. 3F illustrates an example of a user interface screen for entering eligibility information to customize a payroll element template and/or an object instantiated from a template. FIG. 3G illustrates an example of a user interface screen for reviewing customization information. FIG. 3H illustrates an example of a user interface screen for submitting customization information. FIG. 3J illustrates an example of a user interface screen for viewing a summary of a customized payroll element template.

The user interface shown in FIGS. 3A-3J allows a user to select a template for customization and to customize that template via a particular user interface window, where the content (e.g., the questions) to be displayed in that user interface window is dynamically generated by a template customization wizard module. It is noted that various different types of predefined templates can be customized in the same user interface window by the same template customization module. Thus, an earnings payroll element template can be customized via the same user interface window as a deduction payroll element template. Similarly, an earnings payroll element object can be instantiated from the same user interface window as a deduction payroll element object.

FIG. 4 is block diagram of an example of a payroll template logical data model that can be used in some embodiments. FIG. 5 illustrates an example of a payroll template physical data model that corresponds to the logical data model of FIG. 4. The elements of FIGS. 4 and 5 are described in more detail below.

The PAY_TMPLATES table:

COLUMN NAME DATATYPE MANDATORY DESCRIPTION TEMPLATE_ID NUMBER(15) Yes TEMPLATE_NAME VARCHAR2(50 Yes CHAR) TEMPLATE_TYPE CHAR(1 CHAR) Yes OBJECT_VERSION_NUMBER NUMBER(9) Yes VERSION_NUMBER NUMBER(5) No BASE_NAME VARCHAR2(50 No CHAR) BASE_PROCESSING_PRIORITY NUMBER(10) No MAX_BASE_NAME_LENGTH NUMBER(5) No LEGISLATIVE_DATA_GROUP_ID NUMBER(15) No LEGISLATION_CODE VARCHAR2(30 No CHAR) CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_TABLE_INFO table stores the table information of the element types and associated objects.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION TABLE_ID NUMBER(15) Yes OBJECT_VERSION_NUMBER NUMBER(9) No TABLE_NAME VARCHAR2(30 Yes CHAR) TABLE_VO VARCHAR2(200 No CHAR)) TABLE_DESCRIPTION VARCHAR2(200 No CHAR) LEGISLATIVE_DATA_GROUP_ID NUMBER(15) No LEGISLATION_CODE VARCHAR2(30 No CHAR) CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_COL_INFO table stores the column name of the column and also the attribute name. The table id in this table refers to the table information table. This rename flag indicates whether the column should be renamed when the template processing module processes the seeded data to generate a template structure. Generally columns like Element Name, Input Name will have the flag set to ‘Y’. The Surrogate Key Flag indicates whether the column is a surrogate Key in the table. The Primary Key Flag indicates whether the column is a primary key in the table.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION COL_ID NUMBER(15) Yes TABLE_ID NUMBER(15) No OBJECT_VERSION_NUMBER NUMBER(9) No COL_NAME VARCHAR2(30 No CHAR) DATA_TYPE VARCHAR2(30 No CHAR) RENAME_FLAG VARCHAR2(1 No CHAR) ATTR_NAME VARCHAR2(30 No CHAR) SURROGATE_KEY_FLAG CHAR(1 CHAR) No PRIMARY_KEY_FLAG CHAR(1 CHAR) No CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_ROW_INST table stores the object information. The SEED_ROW_INST_ID column stores the row_inst_id of the object from which it is created. If it is a seeded row then the value of the seed_row_inst_id is the same row_inst_id.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION ROW_INST_ID NUMBER(15) Yes TABLE_ID NUMBER(15) No SEED_ROW_INST_ID NUMBER(15) Yes OBJECT_VERSION_NUMBER NUMBER(9) No CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN USE_EXISTING_REC CHAR(1 CHAR) No SURROGATE_KEY_VALUE VARCHAR2(200 No CHAR) TEMPLATE_ID NUMBER(15) No

The PAY_TMPLT_CLMN_INST table stores the actual values of the objects that are seeded. This table refers to the row instance table and the column instance table. The column value is stored in col_value and col_clob_value. USE_EXISTING_REC indicates if this column has to be picked from the seeded data or the core tables. SURROGATE_KEY_VALUE has the value of the surrogate key that will be used by the engine to get the column value (this is used when the use_existing_rec is not null). The RULE_ID column stores the rule_id from the pay_tmplt_rules table. If a user wants to default the value of the column, then this RULE_ID has to be associated with a rule of type “D” in the pay_tmplt_rules table.

When the template processing module encounters the value “Y” in ‘Use_existing_rec’ in pay_tmplt_clmn_inst table, the template processing module picks up the surrogate_key_value and checks the pay_tmplt_table_relate to find the parent table (like pay_element_classification) for the entity (like pay_element_types table in the above example) in the pay_tmplt_clmn_inst table. Then the template processing module picks up the value of the primary key id (that matches the surrogate_key_value in the pay_tmplt_clmn_inst table) from the parent table and populates it into the column col_value of the pay_tmplt_clmn_inst table.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION CLMN_INST_ID NUMBER(15) Yes ROW_INST_ID NUMBER(15) No COL_ID NUMBER(15) No OBJECT_VERSION_NUMBER NUMBER(9) No COL_VALUE VARCHAR2(200 No CHAR) COL_CLOB_VALUE CLOB No RULE_ID NUMBER(15)) No USE_EXISTING_REC CHAR(1 No CHAR) SURROGATE_KEY_VALUE VARCHAR2(200 No CHAR) CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_TABLE_RELATE table stores the relationships between tables. The template processing module uses this when exclusion rules are applied to a template.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION TABLE_RELATE_ID NUMBER(30) Yes PARENT_TABLE_ID NUMBER(15) No PARENT_COL_ID NUMBER(15) No CHILD_TABLE_ID NUMBER(15) No CHILD_COL_ID NUMBER(15) No OBJECT_VERSION_NUMBER NUMBER(9) No CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The following tables are examples of rule tables. The PAY_TMPLT_RULES table stores the rules that are displayed to the user in the wizard. There are three types of rules: Basic rules (rule_type value “B”), which are rules that appear in the basic information page in the template wizard; exclusion rules (rule_type value “E”), which are rules that appear in the detailed information page and are tied to templates; and default rules (rule_type value “D”), which are used to default a column of one or more objects to a user-specified default value.

Rule_option_type indicates whether the input type in the wizard questionnaire should be a radio button (value “R”) or input text value (value “I”). Rule_option_value defines the value set by the radio buttons.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION RULE_ID NUMBER(15) Yes OBJECT_VERSION_NUMBER NUMBER(9) No RULE_OPTIONS_TYPE VARCHAR2(30 Yes CHAR) RULE_OPTIONS_VALUE VARCHAR2(30 No CHAR) RULE_TYPE VARCHAR2(5 No CHAR) LEGISLATIVE_DATA_GROUP_ID NUMBER(15) No LEGISLATION_CODE VARCHAR2(30 No CHAR) CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN TEMPLATE_ID NUMBER(15) No

The PAY_TMPLT_PTRN_ENT_USGS table is a translatable table for the rules table. It will include the default value and the exclusion value.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION RULE_ID NUMBER(15) Yes LANGUAGE VARCHAR2(4 Yes CHAR) OBJECT_VERSION_NUMBER NUMBER(9) No RULE_TXT VARCHAR2(200 Yes CHAR) DEFAULT_VALUE VARCHAR2(200 No CHAR) EXCLUSION_VALUE VARCHAR2(200 No CHAR) CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_RULE_GROUPS table enables rules to be shown in groups in basic and detailed information pages. This table stores information grouping rules. The TEMPLATE_ID will include the corresponding template ID for the group in which we want this rule group to appear. The GROUP_LOCATION will have values of either “B” (basic) or “D” (detailed) to indicate which page of the wizard interface should include the rules in this group. The GROUP_TEXT column will store the group name that is used as the title of the group on the indicated page.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION RULE_GROUP_ID NUMBER(15) Yes BASE_RULE_GROUP_NAME VARCHAR2(80) No OBJECT_VERSION_NUMBER NUMBER(9) Yes CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN TEMPLATE_ID NUMBER(15) No GROUP_LOCATION VARCHAR2(30) No

The PAY_TMPLT_RULE_GROUPS_TL:

COLUMN NAME DATATYPE MANDATORY DESCRIPTION RULE_GROUP_ID NUMBER(15) Yes GROUP_TEXT VARCHAR2(200 Yes CHAR) LANGUAGE VARCHAR2(4 CHAR) Yes SOURCE_LANG VARCHAR2(4 CHAR) Yes OBJECT_VERSION_NUMBER NUMBER(9) Yes CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_RULE_GR_USGS table is used to store the mappings of the groups to the rules. Based on the value seeded in the rule_value column (e.g., in response to user input received in response to a questionnaire), the specific entity row will be excluded or included. If the value seeded in the pay_tmplt_rules_TL table column EXCLUSION_VALUE matches the value seeded in this colun (RULE_VALUE), the entity (row) will be excluded from the template.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION RULE_GROUP_USAGE_ID NUMBER(15) Yes RULE_GROUP_ID NUMBER(15) Yes RULE_ID NUMBER(15) Yes OBJECT_VERSION_NUMBER NUMBER(9) Yes RULE_SEQUENCE NUMBER(15) No CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_ENT_RULE_USGS table provides a mapping between the rules and the row instances tables. One rule can be linked to multiple row instances. The row instances will be excluded if the value provided by the user (e.g., via a response to a question in a questionnaire) is the same as the value in this table. There can be multiple combinations of exclusions depending n the user-provided value for a rule.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION ENT_RULE_USG_ID NUMBER(30) Yes RULE_ID NUMBER(15) No ENTITY_ID NUMBER(15) No RULE_VALUE VARCHAR(200) No OBJECT_VERSION_NUMBER NUMBER(9) No ENTITY_TYPE VARCHAR2(30 CHAR) No CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The following tables are examples of tables that can be used to define template functional areas and patterns. In this examples, the value seeded in the rule_value column (e.g., in response to the user responding to a question in a questionnaire) will be used to determine whether a specific entity row is excluded or included. In particular, if the EXCLUSION_VALUE matches the values seeded in the RULE_VALUE column, the entity (row) will be excluded from the template.

The PAY_TMPLT_FUN_AREAS table defines functional areas.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION FUN_AREA_ID NUMBER(15) Yes OBJECT_VERSION_NUMBER NUMBER(9) No TEMPLATE_ID NUMBER(15) Yes FUN_AREA_NAME VARCHAR2(20 CHAR) Yes DEFAULT_PATTERN_ID NUMBER(15) No LEGISLATIVE_DATA_GROUP_ID NUMBER(15) No LEGISLATION_CODE VARCHAR2(30 CHAR) No CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_DSGN_PTRN table can be used to define patterns.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION PATTERN_ID NUMBER(15) Yes PATTERN_NAME VARCHAR2(20 CHAR) Yes OBJECT_VERSION_NUMBER NUMBER(9) No LEGISLATIVE_DATA_GROUP_ID NUMBER(15) No LEGISLATION_CODE VARCHAR2(30 CHAR) No CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_PTRN_SELECT table associates a particular pattern with different functional areas that have been seeded in the pay_tmplt_fun_areas table.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION PTRN_SELECT_ID NUMBER(15) Yes PATTERN_ID NUMBER(15) No FUN_AREA_ID NUMBER(15) No OBJECT_VERSION_NUMBER NUMBER(15) No LEGISLATIVE_DATA_GROUP_ID NUMBER(15) No LEGISLATION_CODE NUMBER(15) No CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_PTRN_RULE_USGS table matches the pattern with the different rules from the pay_tmplt_rules table.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION PTRN_RULE_USAGE_ID NUMBER(15) Yes PATTERN_ID NUMBER(15) No RULE_ID NUMBER(15) No OBJECT_VERSION_NUMBER NUMBER(9) No CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

The PAY_TMPLT_PTRN_ENT_USGS table maps the different row_inst_id from pay_tmplt_row_inst with the patterns seeded in the pay_tmplt_dsgn_ptrn tables.

COLUMN NAME DATATYPE MANDATORY DESCRIPTION PTRN_RULE_USAGE_ID NUMBER(15) Yes PATTERN_ID NUMBER(15) No ENTITY_ID NUMBER(15) No ENTITY_TYPE VARCHAR2(30 CHAR) No OBJECT_VERSION_NUMBER NUMBER(9) No CREATED_BY NUMBER(15) Yes WHO COLUMN CREATION_DATE DATE Yes WHO COLUMN LAST_UPDATED_BY NUMBER(15) Yes WHO COLUMN LAST_UPDATE_DATE DATE Yes WHO COLUMN LAST_UPDATE_LOGIN NUMBER(15) No WHO COLUMN

FIG. 6 is a block diagram of a computing device 400 that illustrates how a payroll module 150 (e.g., such as payroll module 150 of FIG. 1) that creates customized payroll element templates can be implemented in software. Computing device 400 can be a personal computer, network appliance, server, personal digital assistant, mobile phone, storage controller (e.g., an array controller, tape drive controller, or hard drive controller), laptop computer, or the like. In general, computing device 400 is configured to execute software or otherwise provide appropriate functionality to customize predefined payroll element templates as described herein.

As illustrated, computing device 400 includes one or more processors 402 (e.g., microprocessors, Programmable Logic Devices (PLDs), or Application Specific Integrated Circuits (ASICs)) configured to execute program instructions stored in memory 404. Memory 4004 can include various types of Random Access Memory (RAM), Read Only Memory (ROM), Flash memory, Micro Electro-Mechanical Systems (MEMS) memory, magnetic core memory, and the like. Memory 404 can include both volatile and non-volatile memory.

Computing device 400 also includes one or more interfaces 406 (e.g., such as interfaces to a storage device, network, user output device such as a display device, user input device such as a mouse, touch screen, or keyboard, and the like). Processor 402, interface 406, and memory 404 are coupled to send and receive data and control signals by a bus or other interconnect.

Interface 406 can include a network interface to various networks and/or interfaces to various peripheral buses. For example, interface 406 can include a network interface via which user input requesting various configurations of a predefined payroll element template or the display of information about a predefined or customized payroll element template is received. Interface 406 can also include an interface to one or more storage devices (e.g., such as a storage device, like storage 100 of FIG. 1, storing one or more predefined and/or customized templates).

In this example, program instructions and data executable to implement all or part of payroll module 150 are stored in memory 404. The program instructions and data implementing payroll module 150 can be stored on various computer readable storage media such as memory 404. In some embodiments, such software is stored on a computer readable storage medium such as a Compact Disc (CD), Digital Versatile Disc (DVD), hard disk, optical disk, tape device, floppy disk, and the like). In order to be executed by processor 402, the instructions and data can be loaded into memory 404 from the other computer readable storage medium. The instructions and/or data can also be transferred to computing device 400 for storage in memory 404 via a network such as the Internet or upon a carrier medium.

Examples of Predefined Templates:

In one embodiment, the predefined templates (e.g., predefined templates 110 of FIG. 1) can be structured as follows. This example illustrates the record details that can be included in each of several different types of predefined templates. In this example, <BASE NAME> refers to the name given by the end user to the element type or object. This base name can also be used to create the balances, formulas, and the like. In some cases this will be the name given to the element, and in some cases it will be pre-fixed to the record name (e.g., “My Salary” name will be pre-fixed to the formula “Flat Amount”; such that the record name becomes “My Salary Flat Amount”).

In the following example templates, the rules included in each template can be used for two purposes: to exclude a record and to create a default value. For example, the element “Flat Amount Special Feature” can include the rule {RULE: Total Reached VALUE: N}. This means if the user chooses not to have the total amount feature (as indicated by the user's answer to a corresponding question in a questionnaire) then the special feature element will not be created. As a result any child or referenced records of the special feature element will be excluded as well.

As another example, {RULE:Over Ride DEFAULT:N} on ADDITIONAL ENTRY ALLOWED FLAG. This means the answer to the question will be used to default the given attribute. Also the DEFAULT indicates what would be the default answer for the given question. Please note that this default will be hard coded within the given record. Hence even if a rule is excluded by another rule then the default on the record still remains.

Example Flat Amount Element Predefined Template:

Element Types CLASSIFICATION NAME {Chosen classification} ADDITIONAL ENTRY ALLOWED FLAG {RULE:Over Ride DEFAULT:N} ADJUSTMENT ONLY FLAG N CLOSED FOR ENTRY FLAG N ELEMENT NAME <BASE NAME> INDIRECT ONLY FLAG N MULTIPLE ENTRIES ALLOWED FLAG {RULE:Multiple Entries DEFAULT:Y} STARTING TIME DEF {RULE: Hire Process DEFAULT:On Hire Date} ENDING TIME DEF {RULE: Termination Process DEFAULT:On Final Close Date} PROCESS IN RUN FLAG Y RELATIVE PROCESSING PRIORITY 0 PROCESSING TYPE {RULE:Recurring Or NonRecurring VALUE:N} STANDARD LINK FLAG {RULE:Availability Rule DEFAULT:N} INPUT CURRENCY CODE {RULE:Specify Currency DEFAULT:<Currency code for the given country>} OUTPUT CURRENCY CODE {RULE:Output Currency DEFAULT:<Currency of the given country>} ONCE EACH PERIOD FLAG {RULE:Once Per Period DEFAULT:N} USE AT REL LEVEL {RULE: Process Rel Level DEFAULT:N} USE AT TERM LEVEL {RULE: Process Term Level DEFAULT:N} USE AT ASG LEVEL {RULE: Process Asg Level DEFAULT:Y} PRORATION FORMULA PRORATION GROUP {RULE: Proration Group DEFAULT:PRORATION_GROUP} TIME DEFINITION TYPE TIME DEFINITION RECALC EVENT GROUP {RULE:Retro Group DEFAULT:RETRO_GROUP} REPORTING NAME ITERATIVE FLAG {RULE:Iterative Information DEFAULT:N} ITERATIVE FORMULA DEFAULT_GROSSUP ITERATIVE PRIORITY 10 PROCESS MODE {RULE:Process Period DEFAULT:S} EXCLUSION RULE CLASSIFICATION NAME {Chosen classification} ADDITIONAL ENTRY ALLOWED N FLAG ADJUSTMENT ONLY FLAG N CLOSED FOR ENTRY FLAG N ELEMENT NAME <BASE NAME> Special Feature INDIRECT ONLY FLAG Y MULTIPLE ENTRIES ALLOWED Y FLAG STARTING TIME DEF {RULE: Hire Process DEFAULT:On Hire Date} ENDING TIME DEF {RULE: Termination Process DEFAULT:On Final Close Date} PROCESS IN RUN FLAG Y RELATIVE PROCESSING 50 PRIORITY PROCESSING TYPE N STANDARD LINK FLAG N INPUT CURRENCY CODE {RULE:Specify Currency DEFAULT:<Currency code for the given country>} OUTPUT CURRENCY CODE {RULE:Output Currency DEFAULT:<Currency of the given country>} ONCE EACH PERIOD FLAG N USE AT REL LEVEL {RULE: Process Rel Level DEFAULT:N} USE AT TERM LEVEL {RULE: Process Term Level DEFAULT:N} USE AT ASG LEVEL {RULE: Process Asg Level DEFAULT:Y} PRORATION FORMULA PRORATION GROUP TIME DEFINITION TYPE TIME DEFINITION RECALC EVENT GROUP REPORTING NAME SF ITERATIVE FLAG ITERATIVE FORMULA ITERATIVE PRIORITY PROCESS MODE N EXCLUSION RULE {RULE: Total Reached VALUE: N}

Element type Usages ELEMENT <BASE NAME> <BASE NAME> <BASE NAME> TYPE INCLUSION N N N FLAG RUN TYPE Separate Payment Standard Process Separate NAME EXCLUSION {RULE:Process {RULE:Process {RULE:Process RULE Period Period Period VALUE: S} VALUE: N} VALUE: P}

Input Values ELEMENT <BASE <BASE <BASE <BASE <BASE TYPE NAME> NAME> NAME> NAME> NAME> EXCLUSION {RULE: {RULE: RULE Process Process Period Period VALUE: VALUE: NOT S} NOT N} DISPLAY 1 2 3 21 22 SEQUENCE GENERATE Y Y N N N DB ITEMS FLAG HOT N N N N N DEFAULT FLAG MANDATORY N N N Y Y FLAG NAME Pay Value Amount Jurisdiction Process Separate Seperate Payment UOM M M C C C LOOKUP YES_NO YES_NO TYPE DEFAULT N N VALUE ELEMENT <BASE <BASE <BASE <BASE NAME> TYPE NAME> NAME> NAME> EXCLUSION {RULE: RULE Total Reached VALUE: N} DISPLAY 20 23 24 9 SEQUENCE GENERATE N N N Y DB ITEMS FLAG HOT N N N N DEFAULT FLAG MANDATORY Y Y Y N FLAG NAME Maximum Deduction Reduce Low Gross Amount Processing Regular UOM M C C M LOOKUP DEDUCTION_PROCESSING YES_NO TYPE DEFAULT {RULE: {RULE: {RULE: Iterative VALUE Deduction Reduce Information Types Regular DEFAULT: N} DEFAULT: A} DEFAULT: N} ELEMENT <BASE <BASE <BASE <BASE <BASE TYPE NAME> NAME> NAME> NAME> NAME> EXCLUSION RULE DISPLAY 10 11 12 13 14 SEQUENCE GENERATE Y Y Y Y Y DB ITEMS FLAG HOT N N N N N DEFAULT FLAG MANDATORY N N Y N Y FLAG NAME High Reminder To Within Additional Method Gross Amount UOM M M M M M LOOKUP ITERATIVE_METHOD TYPE DEFAULT {RULE: {RULE: {RULE: Interpolation Interpolation VALUE Iterative Iterative Iterative Information Information Information DEFAULT: DEFAULT: DEFAULT: N} N} N} ELEMENT TYPE <BASE NAME> Special <BASE NAME> Special Feature Feature EXCLUSION RULE {RULE: Total Reached {RULE: Total Reached VALUE: N} VALUE: N} DISPLAY 1 3 SEQUENCE GENERATE DB Y N ITEMS FLAG HOT DEFAULT N N FLAG MANDATORY FLAG N N NAME Pay Value Clear Accrued UOM M M LOOKUP TYPE DEFAULT VALUE

Balance Types ASSIGNMENT N N N REMUNERATION FLAG BALANCE NAME <BASE NAME> <BASE NAME> <BASE NAME> Accrued Negative Earning BALANCE UOM M M M CURRENCY {RULE: {RULE: {RULE: CODE Output Currency Output Currency Output Currency DEFAULT:< DEFAULT:< DEFAULT:< Currency of the Currency of the given Currency of the given given country>} country>} country>} COMMENTS Primary balance Accrued balance for Negative Earning for Flat Amount Flat Amount. balance for Flat Earnings. Amount. REPORTING Accrued Accrued NAME CATEGORY Earnings Wages Wages NAME BASE BALANCE <BASE NAME> <BASE NAME> TYPE INPUT VALUE Pay Value EXCLUSION {RULE: Total {RULE: Total RULE Reached VALUE: N} Reached VALUE: N}

Balance Feeds ELEMENT NAME <BASE <BASE NAME> <BASE NAME> NAME> Special Feature INPUT VALUE Pay Value Clear Accrued Pay Value BALANCE NAME <BASE <BASE NAME> <BASE NAME> NAME> Accrued Accrued SCALE 1 1 1 EXCLUSION RULE {RULE: Total {RULE: Total Reached VALUE: Reached VALUE: N} N}

Defined Balances BALANCE TYPE DIMENSION EXCLUSION RULE Flat Amount Payroll Relationship Calendar Year To Date Flat Amount Payroll Relationship Calendar Quater To Date Flat Amount Payroll Relationship Calendar Month To Date Flat Amount Payroll Relationship Inception {RULE: Total Reached To Date VALUE: N} Flat Amount Payroll Relationship Pay Run Flat Amount Payroll Term Calendar Year {RULE:Processing Level To Date VALUE: R} Flat Amount Payroll Term Inception {RULE:Processing Level To Date VALUE: R} {RULE: Total Reached VALUE: N} Flat Amount Payroll Term Pay Run {RULE:Processing Level VALUE: R} Flat Amount Payroll Assignment Calendar {RULE:Processing Level Year To Date VALUE: NOT A} Flat Amount Payroll Assignment Inception {RULE:Processing Level To Date VALUE: NOT A} {RULE: Total Reached VALUE: N} Flat Amount Payroll Assignment Pay Run {RULE:Processing Level VALUE: NOT A} Flat Amount Payment Flat Amount Element Entry Inception {RULE: Total Reached To Date VALUE: N}

Fast Formulas FORMULA _FLAT_AMOUNT_EARN NAME DESCRIPTION Formula for Flat Amount Template FORMULA /************************************************** TEXT *************************** FORMULA NAME: _FLAT_AMOUNT_EARN FORMULA TYPE: Payroll DESCRIPTION: Formula for Flat Amount for Earning Template for International Payroll. Returns pay value (Amount); Formula Results : flat_amount Direct Result for Earnings Amount. clear_accrued Indirect Result for Accrued Amount. STOP_ENTRY To indicate whether the entry needs to be ended. mesg Warning message will be issued for this assignment. *************************************************** ****************************/ /* Database Item Defaults */ DEFAULT FOR flat_amount is 0 DEFAULT FOR additional_amount is 0 DEFAULT FOR maximum_amount is 0 DEFAULT FOR mesg is ‘NOT ENTERED’ DEFAULT FOR <BASE NAME>_ACCRUED_CORE_ASG_ITD IS 0 DEFAULT FOR <BASE NAME>_ACCRUED_CORE_ASG_ITD IS 0 DEFAULT FOR <BASE NAME>_ACCRUED_CORE_TRM_ITD IS 0 DEFAULT FOR <BASE NAME>_ACCRUED_CORE_PRS_ITD IS 0 DEFAULT FOR <BASE NAME>_CORE_EE_ITD IS 0 DEFAULT FOR <BASE NAME>_EMPLOYEMENT_LEVEL IS ‘A’ default for prorate_start is ‘01-JAN- 1900’ (date) default for prorate_end is ‘01-JAN- 1900’ (date) DEFAULT FOR PAY_PROC_PERIOD_START_DATE IS ‘0001/01/01 00:00:00’ (DATE) DEFAULT FOR PAY_PROC_PERIOD_END_DATE IS ‘0001/01/02 00:00:00’(Date) /* Inputs */ INPUTS ARE Amount (number), additional_amount (number), maximum_amount (number), prorate_start (date), prorate_end (date) /* Declarations */ get_accrued_value = 0 accrued_value = 0 clear_accrued = 0 /* Amount to be derived from the given Pay Source by using the Get_Amount function. */ flat_amount = Get_Amount( ) + additional_amount l_start_date = GREATEST(PAY_PROC_PERIOD_START_DATE, <BASE NAME>_START_DATE, prorate_start) l_end_date = LEAST(PAY_PROC_PERIOD_END_DATE, <BASE NAME>_END_DATE, prorate_end) l_duration = (DAYS_BETWEEN( PAY_PROC_PERIOD_END_DATE , PAY_PROC_PERIOD_START_DATE)+1) /* Calculations */ /* Proration Calculation (if enabled) */ IF (prorate_start WAS NOT DEFAULTED) THEN  (   flat_amount = flat_amount * (DAYS_BETWEEN( l_end_date , l_start_date)+1)/        l_duration ) /* Total Reached Check (if enabled) */ IF (maximum_amount WAS NOT DEFAULTED) THEN  (   /* Use the appropriate balance based on the employment level for the given element.*/   IF (<BASE NAME>_EMPLOYEMENT_LEVEL = ‘A’) THEN    (     get_accrued_value  = <BASE NAME>_ACCRUED_CORE_ASG_ITD    )   ELSE IF (<BASE NAME>_EMPLOYEMENT_LEVEL = ‘T’) THEN    (     get_accrued_value  = <BASE NAME>_ACCRUED_CORE_TRM_ITD    )   ELSE    (     get_accrued_value  = <BASE NAME>_ACCRUED_CORE_PSR_ITD    )   base_entry_itd   = <BASE NAME>_EE_ITD   IF base_entry_itd = 0 AND get_accrued_value > 0 THEN   (     clear_accrued  = get_accrued_value*−1     accrued_value = 0   )   ELSE   (     accrued_value = get_accrued_value   )   IF (maximum_amount <= flat_amount + accrued_value) then   (      flat_amount = maximum_amount − accrued_value      clear_accrued = (get_accrued_value + flat_amount) * −1      mesg = mesg||‘Earnings element entry has stopped’            ||‘ as the Maximum Amount has been reached.’      STOP_ENTRY  = ‘Y’   )  ) /* Returns */ RETURN flat_amount , clear_accrued , STOP_ENTRY , mesg /* End Formula Text */ EXCLUSION RULE

Formula Rules SHADOW <BASE NAME> <BASE NAME> <BASE <BASE ELEMENT NAME> NAME> TYPE FORMULA <BASE <BASE <BASE <BASE NAME> NAME> NAME> NAME> _FLAT_AMOUNT_EARN _FLAT_AMOUNT_EARN _FLAT_AMOUNT_EARN _FLAT_AMOUNT_EARN ELEMENT <BASE <BASE TYPE NAME> NAME> Special Feature RESULT flat_amount clear_accured STOP_ENTRY mesg NAME INPUT Pay Value Clear VALUE Accrued RESULT D I S M RULE TYPE EX- CLUSION RULE

Iterative Rules ELEMENT <BASE <BASE <BASE <BASE <BASE NAME> NAME> NAME> NAME> NAME> FORMULA DEFAULT_GROSSUP DEFAULT_GROSSUP DEFAULT_GROSSUP DEFAULT_GROSSUP DEFAULT_GROSSUP RETURN ADDITIONAL_AMOUNT HIGH_GROSS LOW_GROSS REMAINDER STOPPER NAME TYPE A A A A S INPUT Additional High Gross Low Gross Remainder VALUE Amount SEVERITY EXCLUSION RULE

Retro Component Usages CREATOR TYPE ET CREATOR Flat Amount RETRO Replacement COMPONENT DEFAULT Y COMPONENT REPROCESS R TYPE

Example Days X Rate Predefined Template:

Element Types CLASSIFICATION NAME {Chosen classification} ADDITIONAL ENTRY ALLOWED {RULE:Over Ride DEFAULT:N} FLAG ADJUSTMENT ONLY FLAG N CLOSED FOR ENTRY FLAG N ELEMENT NAME Days X Rate INDIRECT ONLY FLAG N MULTIPLE ENTRIES ALLOWED {RULE:Multiple Entries DEFAULT:Y} FLAG STARTING TIME DEF {RULE: Hire Process DEFAULT:On Hire Date} ENDING TIME DEF {RULE: Termination Process DEFAULT:On Final Close Date} PROCESS IN RUN FLAG Y RELATIVE PROCESSING 0 PRIORITY PROCESSING TYPE {RULE:Recurring Or NonRecurring VALUE:N} STANDARD LINK FLAG {RULE:Availability Rule DEFAULT:N} INPUT CURRENCY CODE {RULE:Specify Currency DEFAULT:<Currency code for the given country>} OUTPUT CURRENCY CODE {RULE:Output Currency DEFAULT:<Currency of the given country>} ONCE EACH PERIOD FLAG {RULE:Once Per Period DEFAULT:N} USE AT REL LEVEL {RULE: Process Rel Level DEFAULT:N} USE AT TERM LEVEL {RULE: Process Term Level DEFAULT:N} USE AT ASG LEVEL {RULE: Process Asg Level DEFAULT:Y} PRORATION FORMULA _Days_X_Rate_Proration PRORATION GROUP {RULE:Proration DEFAULT:N} TIME DEFINITION TYPE ? TIME DEFINITION ? RECALC EVENT GROUP {RULE:Retro DEFAULT:N} REPORTING NAME ITERATIVE FLAG {RULE:Iterative Information DEFAULT:N} ITERATIVE FORMULA DEFAULT_GROSSUP ITERATIVE PRIORITY 10 PROCESS MODE {RULE:Process Period DEFAULT:S}

Element Type Usages ELEMENT TYPE Days X Rate Days X Rate Days X Rate Days X Rate INCLUSION N N N N FLAG RUN TYPE Separate Process Process Separate NAME Payment Separately Separately - Payment - Non Non Periodic Periodic EXCLUSION {RULE: {RULE: {RULE: {RULE: RULE Recurring Or Recurring Or Recurring Or Recurring Or NonRecurring NonRecurring NonRecurring NonRecurring VALUE:R} VALUE:R} VALUE:N} VALUE:N}

Fast Formulas FORMULA _DAYS_X_RATE NAME DESCRIPTION Formula for Days X Rate Template FORMULA /************************************************* TEXT **************************** FORMULA NAME: DAYS_X_RATE FORMULA TYPE: Payroll DESCRIPTION: Formula for Days X Rate element where Days must be input, Multiple defaults to 1 if not input,  and Rate is determined by one of the following, in order of preference: 1) Entry of “Rate” input value 2) Salary Admin “Pay Basis” information -- INPUTS: Days Rate Multiple -- Change History -- ************************************************** ******************** Formula Results :  earnings_amount Direct Result for Earnings Pay Value.  mesg Message indicating that this earnings will be deleted for this assignment. ************************************************** ********************/ /* ===== Alias Section Begin ====== */ ALIAS HR_WORK_SCHEDULE AS Work_Schedule ALIAS HR_TIMECARD_REQUIRED AS Timecard_Required /* ===== Alias Section End ====== */ /* ===== Defaults Section Begin ===== */ DEFAULT FOR PAY_PROC_PERIOD_START_DATE is ‘0001/01/01 00:00:00’ (DATE) DEFAULT FOR PAY_PROC_PERIOD_END_DATE is ‘0001/01/02 00:00:00’ (DATE) DEFAULT FOR ASG_SALARY is 0 DEFAULT FOR ASG_SALARY_BASIS is ‘NOT ENTERED’  /* IF Work_Schedule is not entered, this is assumed that employee works   8 hours a day and 5 days a week */ DEFAULT FOR  Work_Schedule is ‘1 Schedule: 8-8-8-8-8-0-0’ DEFAULT FOR Timecard_Required is ‘N’ DEFAULT FOR Includes_Rest_Days is ‘N’ DEFAULT FOR Days is 0 DEFAULT FOR Rate is 0 DEFAULT FOR Multiple is 1 DEFAULT FOR ASG_FREQ_CODE is ‘W’ DEFAULT FOR ASG_HOURS is 40 /* ===== Defaults Section End ===== */ /* ===== Inputs Section Begin ===== */ Inputs are Days, Rate, Multiple /* ===== Inputs Section End ===== */ /* =====Local variables ===== */ local_dummy_class_name = ‘NONE’ local_daily_salary = 0 local_gross_earnings = GROSS_EARNINGS_ASG_RUN local_ytd_gross_earnings = GROSS_EARNINGS_ASG_YTD mesg = ‘NOT ENTERED’ /* ===== CALCULATION SECTION BEGIN ===== */   /* Use pay basis input value id and basis to find rate. If     ASG_HOURLY_SALARY is the amount, then can call     Convert_Period_Type */   IF ASG_SALARY_BASIS = ‘DAILY’ THEN   (    local_daily_salary = ASG_SALARY   )   ELSE   (    local_daily_salary = Convert_Period_Type( Work_Schedule, ASG_HOURS, ASG_SALARY, ASG_SALARY_BASIS, ‘DAILY’, PAY_PROC_PERIOD_START_DATE, PAY_PROC_PERIOD_END_DATE, ASG_FREQ_CODE)    )   IF Rate WAS DEFAULTED THEN   (      calc_rate = local_daily_salary      /*IF ASG_SALARY_BASIS = ‘DAILY’ THEN      (       calc_rate = ASG_SALARY     )     ELSE     (       calc_rate = Convert_Period_Type( Work_Schedule, ASG_HOURS, ASG_SALARY, ASG_SALARY_BASIS, ‘DAILY’, PAY_PROC_PERIOD_START_DATE, PAY_PROC_PERIOD_END_DATE, ASG_FREQ_CODE)     )*/   )   ELSE   (    /* Rate is entered */    calc_rate = Rate   ) /* ---- Now find Multiple ----- */   calc_multiple = Multiple /* ---- Now find Days ----- */   tot_days_in_pay_period = Days_in_Pay_Period( )   IF ASG_SALARY WAS DEFAULTED THEN   (     LOCAL_DAILY_SALARY = FIXED_EARNINGS_ASG_GRE_RUN / tot_days_in_pay_period   )   IF Days WAS DEFAULTED THEN   (     IF Timecard_Required = ‘Y’ THEN     (       calc_days = 0       tot_work_days = 0       mesg = GET_MESG(‘PAY’,‘PAY_TIMECARD_NOT_FOUND’, ‘BASE_NAME’,‘<BASE_NAME>’)       RETURN mesg     )     ELSE     (       IF Includes_Rest_days = ‘Y’ THEN       (         calc_days = tot_days_in_pay_period         tot_work_days = tot_days_in_pay_period       )       ELSE       (         calc_days = Work_Sch_Total_Hours_or_Days( Work_Schedule, PAY_PROC_PERIOD_START_DATE, PAY_PROC_PERIOD_END_DATE, ‘DAYS’)         tot_work_days = calc_days       )     )   )   ELSE   (     /* Use entered Days.  */     calc_days = Days     IF Includes_Rest_days = ‘Y’ THEN     (       tot_work_days = tot_days_in_pay_period      )      ELSE      (       tot_work_days = Work_Sch_Total_Hours_or_Days( Work_Schedule, PAY_PROC_PERIOD_START_DATE, PAY_PROC_PERIOD_END_DATE, ‘DAYS’)      )   )   earnings_amount = (calc_days * calc_multiple * calc_rate) * (tot_days_in_pay_period / tot_work_days) /* ===== CALCULATION SECTION END ===== */ /* ===== Returns Section Begin ===== */  earnings_days   = calc_days  RETURN  earnings_amount       ,  earnings_days /* ===== Returns Section End ===== */ /* End Formula Text */ FORMULA _DAYS_X_RATE_PRORATION NAME DESCRIPTION Formula for Days X Rate Proration Template FORMULA /************************************************* TEXT *********** Description : Formula to calculate pro rated amounts. DISCLAIMER : This formula is strictly for example or prototype  purposes only. You should update the formula to meet your particular  requirements. This formula may contain certain hard  coded values to simplify the use of formulas for proration. A typical example  of proration would be when a new employee starts work in the middle of a  monthly payroll period and your payroll department makes a pro-rata payment  to reflect the proportion of monthly pay to which the employee is entitled.  The prototype formula supplied is only designed to work for payroll  calculations involving proration and should not be used for any other purpose.  Any use of the formula is subject to the terms of the Oracle license agreement  for the HRMS programs and documentation. ************************************************** ***********/ default for prorate_start is ‘01-JAN-1900’ (date) default for prorate_end is ‘01-JAN-1900’ (date) default for amount is 0.0 inputs are prorate_start (date), prorate_end (date), annual_amount (number) /**  Prorate_start and prorate_end dates are passed from the payroll engine. These  dates basically represent the dates on which the changes occur in the  deduction amount during the pay period. annual_amount is an input value  created in the element to which this formula will be tied. Here the  assumption is that the user enters the annual deduction amount in the  input value. **/ l_amount = annual_amount message = ‘Proration Start Date ’ | | TO_CHAR(prorate_start, ‘DD-MON-YYYY’) IF (prorate_start was defaulted) then ( /**  prorate_start date is defaulted when no pro ration occurs. Therefore we  should just return the annual deduction amount divided by 12. **/    l_amount = l_amount / 12    return l_amount, message ) else (    l_days = days_between(prorate_end , prorate_start) + 1 /**  l_days stores the number of days between prorate start and prorate  end dates **/    l_days_in_fiscal_year = 365 /**   It is another assumption that a year contains 365 days. Please change   this assumption to take care of leap year. This formula will not work   properly in a leap year. **/    l_amount = (l_amount * l_days) / l_days_in_fiscal_year /**  In the above calculation, since l_amount contains the annual deduction amount,  it is divided by 365 days of the year to get the deduction amount per day.  This amount is then multiplied by the number of days in question to get  the proper deduction amount **/ return l_amount, message )

Formula Rules SHADOW ELEMENT TYPE Days X Rate Days X Rate FORMULA _DAYS_X_RATE _DAYS_X_RATE ELEMENT TYPE Days X Rate Days X Rate EXCLUSION RULE RESULT NAME earnings_amount earnings_days INPUT VALUE Pay Value Days RESULT RULE TYPE D D

Balance Types EXCLUSION RULE ASSIGNMENT N N REMUNERATION FLAG BALANCE NAME Days X Rate Days X Rate Days BALANCE UOM M ND CURRENCY CODE {RULE:Output Currency {RULE:Output DEFAULT:<Currency of Currency the given country>} DEFAULT:<Currency of the given country>} COMMENTS Primary balance for Days Days balance for X Rate Earnings. Days X Rate Earnings. REPORTING NAME Days CATEGORY NAME Earnings Earnings Days BASE BALANCE Days X Rate TYPE INPUT VALUE Pay Value

Input Values ELEMENT Days X Days X Days X Days X Days X TYPE Rate Rate Rate Rate Rate EXCLUSION RULE EXCLUSION RULE VALUE DISPLAY 1 2 3 4 5 SEQUENCE GENERATE Y Y Y Y Y DB ITEMS FLAG HOT N N N N N DEFAULT FLAG MANDATO- X N N N X RY FLAG NAME Pay Value Days Rate Multiple Jurisdiction UOM M ND N N C LOOKUP TYPE DEFAULT VALUE DEFAULT VALUE COLUMN ELEMENT TYPE Days X Rate EXCLUSION RULE EXCLUSION RULE VALUE DISPLAY SEQUENCE 11 GENERATE DB ITEMS Y FLAG HOT DEFAULT FLAG N MANDATORY FLAG N NAME Includes Rest Days UOM C LOOKUP TYPE YES_NO DEFAULT VALUE DEFAULT VALUE COLUMN

Balance Feeds INPUT VALUE Pay Value Days BALANCE TYPE Days X Rate Days X Rate Days EXCLUSION RULE SCALE 1 1 BALANCE NAME

Defined Balances EXCLUSION BALANCE TYPE DIMENSION RULE Days X Rate _CORE_PRS_RUN Days X Rate _CORE_PRS_PY_PTD Days X Rate _CORE_PRS_MTD Days X Rate _CORE_PRS_QTD Days X Rate _CORE_PRS_YTD Days X Rate _CORE_PRS_TU_RUN Days X Rate _CORE_PRS_TU_PY_PTD Days X Rate _CORE_PRS_TU_YTD Days X Rate _CORE_ASG_RUN Days X Rate _CORE_ASG_PY_PTD Days X Rate _CORE_ASG_MTD Days X Rate _CORE_ASG_QTD Days X Rate _CORE_ASG_YTD Days X Rate _CORE_ASG_TU_RUN Days X Rate _CORE_ASG_TU_PY_PTD Days X Rate _CORE_ASG_TU_YTD Days X Rate Days _CORE_PRS_RUN Days X Rate Days _CORE_PRS_PY_PTD Days X Rate Days _CORE_PRS_MTD Days X Rate Days _CORE_PRS_QTD Days X Rate Days _CORE_PRS_YTD Days X Rate Days _CORE_PRS_TU_RUN Days X Rate Days _CORE_PRS_TU_PY_PTD Days X Rate Days _CORE_PRS_TU_YTD Days X Rate Days _CORE_ASG_RUN Days X Rate Days _CORE_ASG_PY_PTD Days X Rate Days _CORE_ASG_MTD Days X Rate Days _CORE_ASG_QTD Days X Rate Days _CORE_ASG_YTD Days X Rate Days _CORE_ASG_TU_RUN Days X Rate Days _CORE_ASG_TU_PY_PTD Days X Rate Days _CORE_ASG_TU_YTD

Retro Component Usages CREATOR TYPE ET CREATOR Days X Rate RETRO Replacement COMPONENT DEFAULT Y COMPONENT REPROCESS R TYPE

Example Hours X Rate Predefined Template:

Element Types CLASSIFICATION {Chosen classification} NAME ADDITIONAL {RULE:Over Ride DEFAULT:N} ENTRY ALLOWED FLAG ADJUSTMENT N ONLY FLAG CLOSED FOR N ENTRY FLAG ELEMENT NAME Hours X Rate INDIRECT ONLY N FLAG MULTIPLE {RULE:Multiple Entries DEFAULT:Y} ENTRIES ALLOWED FLAG STARTING TIME {RULE: Hire Process DEFAULT:On Hire Date} DEF ENDING TIME {RULE: Termination Process DEFAULT:On Final DEF Close Date} PROCESS IN Y RUN FLAG RELATIVE 0 PROCESSING PRIORITY PROCESSING {RULE:Recurring Or NonRecurring VALUE:N} TYPE STANDARD LINK {RULE:Availability Rule DEFAULT:N} FLAG INPUT {RULE:Specify Currency DEFAULT:<Currency CURRENCY code for the given country>} CODE OUTPUT {RULE:Output Currency DEFAULT:<Currency of CURRENCY the given country>} CODE ONCE EACH {RULE:Once Per Period DEFAULT:N} PERIOD FLAG USE AT REL {RULE: Process Rel Level DEFAULT:N} LEVEL USE AT TERM {RULE: Process Term Level DEFAULT:N} LEVEL USE AT ASG {RULE: Process Asg Level DEFAULT:Y} LEVEL PRORATION _HOURS_X_RATE_PRORATION FORMULA PRORATION {RULE:Proration DEFAULT:N} GROUP TIME ? DEFINITION TYPE TIME ? DEFINITION RECALC EVENT {RULE:Retro DEFAULT:N} GROUP REPORTING NAME ITERATIVE FLAG {RULE:Iterative Information DEFAULT:N} ITERATIVE DEFAULT_GROSSUP FORMULA ITERATIVE 10 PRIORITY PROCESS MODE {RULE:Process Period DEFAULT:S}

Element TypeUsages ELEMENT Hours X Hours X Hours X Hours X TYPE Rate Rate Rate Rate INCLUSION N N N N FLAG RUN TYPE Separate Process Separate Process NAME Payment Separately Payment - Separately - Non Periodic Non Periodic EXCLUSION {RULE: {RULE: {RULE: {RULE: RULE Recurring Or Recurring Or Recurring Or Recurring Or Non Non Non Non- Recurring Recurring Recurring Recurring VALUE:R} VALUE:R} VALUE:N} VALUE:N}

Fast Formulas FORMULA _HOURS_X_RATE NAME DESCRIPTION Formula for Hours X Rate Template FORMULA /************************************************* TEXT **************************** FORMULA NAME: HOURS_X_RATE FORMULA TYPE: Payroll DESCRIPTION: Creates formula for template element where Hours must be input, Multiple defaults to 1 if not input, and Rate is determined by one of the following, in order of preference: 1) Entry of “Rate” input value 2) Entry of “Rate Code” input value 3) Salary Admin “Pay Basis” information -- INPUTS: Hours Multiple Rate Rate_Code -- Change History -- ************************************************** ******************** Formula Results :  earnings_amount Direct Result for Earnings Pay Value.  mesg Message indicating that this earnings will be deleted for for this assignment.  Followings are Indirect result for Hours by Rate element:  ELEMENT_TYPE_ID_PASSED  RATE_PASSED  HOURS_PASSED  MULTIPLE_PASSED ************************************************** ********************/ /* ===== Alias Section Begin ====== */ ALIAS HR_WORK_SCHEDULE AS Work_Schedule ALIAS HR_TIMECARD_REQUIRED AS Timecard_Required /* ===== Alias Section End ====== */ /* ===== Defaults Section Begin ===== */ default for PAY_PROC_PERIOD_START_DATE is ‘0001/01/01 00:00:00’ (DATE) default for PAY_PROC_PERIOD_END_DATE  is ‘0001/01/02 00:00:00’ (DATE) default for ASG_HOURLY_SALARY is 0 default for ASG_SALARY_BASIS_CODE     is ‘NOT ENTERED’ default for USER_ENTERED_TIME        is ‘N’ default for Timecard_Required          is ‘N’ default for <BASE NAME>_ASG_GRE_RUN  is 0 default for <BASE NAME>_ASG_GRE_YTD   is 0 default for <BASE NAME>_HOURS_ASG_GRE_RUN   is 0 default for Work_Schedule               is ‘NOT ENTERED’ default for ASG_HOURS               is 0 default for Hours is 0 default for Rate is 0 default for Multiple is 1 default for ASG_FREQ_CODE     is ‘NOT ENTERED’ default for NET_ASG_GRE_RUN   is 0 default for NON_PAYROLL_PAYMENTS_ASG_GRE_RUN is 0 /* ===== Defaults Section End ===== */ /* ===== Inputs Section Begin ===== */ Inputs are  Hours,  Rate,  Rate_Code (text), Rate_Table (text),  Rate_Table_Column (text),  Multiple,  Multiple_Code (text),  Multiple_Table (text),  Multiple_Table_Column (text) /* ===== Inputs Section End ===== */ ELEMENT_TYPE_ID_PASSED = CURRENT_ELEMENT_TYPE_ID RATE_PASSED = 0 HOURS_PASSED = 0 MULTIPLE_PASSED = 0 /* ===== CALCULATION SECTION BEGIN ===== */ IF Rate WAS DEFAULTED THEN IF ASG_HOURLY_SALARY WAS DEFAULTED THEN ( mesg = GET_MESG(‘PAY’,‘PAY_74096_RATE_NOT_FOUND’,‘BASE_NAME’, ‘<BASE NAME>’)  RETURN mesg ) ELSE  /* Use pay basis input value id and basis to find rate. If ASG_HOURLY_SALARY is the amount, then can call Convert_Period_Type */ IF ASG_SALARY_BASIS_CODE = ‘HOURLY’ THEN calc_rate = ASG_HOURLY_SALARY ELSE calc_rate = Convert_Period_Type( Work_Schedule, ASG_HOURS, ASG_HOURLY_SALARY, ASG_SALARY_BASIS_CODE, ‘HOURLY’, PAY_PROC_PERIOD_START_DATE, PAY_PROC_PERIOD_END_DATE, ASG_FREQ_CODE) ELSE /* Rate is entered */ calc_rate = Rate /* ---- Now find Multiple ----- */ IF Multiple WAS DEFAULTED THEN IF Multiple_Code WAS DEFAULTED THEN calc_Multiple = 1 ELSE calc_Multiple = Multiple /* ---- Now find Hours ----- */ IF Hours WAS DEFAULTED THEN IF ASG_HOURS WAS DEFAULTED THEN (  mesg = GET_MESG(‘PAY’,‘PAY_74097_HOURS_NOT_FOUND’,‘BASE_NAME’, ‘<BASE NAME>’)  RETURN mesg  ) ELSE  /* Use standard hours entered on ASGignment */ ( calc_hours = ASG_HOURS earnings_amount = (ASG_HOURS * calc_Multiple * calc_rate) ) ELSE  /* Use entered hours. */ ( earnings_amount = (Hours * calc_Multiple * calc_rate) calc_hours = Hours ) /* ===== CALCULATION SECTION END ===== */ /* ===== Returns Section Begin ===== */ earnings_hours = calc_hours RATE_PASSED = calc_rate MULTIPLE_PASSED = Multiple HOURS_PASSED = earnings_hours RETURN  earnings_amount , earnings_hours , mesg , mesg_err , ELEMENT_TYPE_ID_PASSED , RATE_PASSED , HOURS_PASSED , MULTIPLE_PASSED /* ===== Returns Section End ===== */ FORMULA _HOURS_X_RATE_PRORATION NAME DESCRIPTION Formula for Hours X Rate Proration Template FORMULA /************************************************* TEXT *********** Description : Formula to calculate pro rated amounts. DISCLAIMER : This formula is strictly for example or prototype  purposes only. You should update the formula to meet your particular  requirements. This formula may contain certain hard  coded values to simplify the use of formulas for proration. A typical example  of proration would be when a new employee starts work in the middle of a  monthly payroll period and your payroll department makes a pro-rata payment  to reflect the proportion of monthly pay to which the employee is entitled.  The prototype formula supplied is only designed to work for payroll  calculations involving proration and should not be used for any other purpose.  Any use of the formula is subject to the terms of the Oracle license agreement  for the HRMS programs and documentation. ************************************************** ***********/ default for prorate_start is ‘01-JAN-1900’ (date) default for prorate_end is ‘01-JAN-1900’ (date) default for amount is 0.0 inputs are prorate_start (date), prorate_end (date), annual_amount (number) /**  Prorate_start and prorate_end dates are passed from the payroll engine. These  dates basically represent the dates on which the changes occur in the  deduction amount during the pay period. annual_amount is an input value  created in the element to which this formula will be tied. Here the  assumption is that the user enters the annual deduction amount in the  input value. **/ l_amount = annual_amount message = ‘Proration Start Date ’ || TO_CHAR(prorate_start, ‘DD-MON-YYYY’) IF (prorate_start was defaulted) then ( /**  prorate_start date is defaulted when no proration occurs. Therefore we  should just return the annual deduction amount divided by 12. **/   l_amount = l_amount / 12   return l_amount, message ) else (    l_days = days_between(prorate_end , prorate_start) + 1 /**  l_days stores the number of days between prorate start and prorate  end dates **/    l_days_in_fiscal_year = 365 /**   It is another assumption that a year contains 365 days. Please change   this assumption to take care of leap year. This formula will not work   properly in a leap year. **/   l_amount = (l_amount * l_days) / l_days_in_fiscal_year /**  In the above calculation, since l_amount contains the annual deduction amount,  it is divided by 365 days of the year to get the deduction amount per day.  This amount is then multiplied by the number of days in question to get  the proper deduction amount **/ return l_amount, message )

Formula Rules SHADOW ELEMENT Hours X Rate Hours X Rate TYPE FORMULA _HOURS_X_RATE _HOURS_X_RATE ELEMENT TYPE Hours X Rate Hours X Rate EXCLUSION RULE RESULT NAME earnings_amount earnings_hours INPUT VALUE Pay Value Hours RESULT RULE TYPE D D

Balance Types EXCLUSION RULE ASSIGNMENT N N REMUNERATION FLAG BALANCE NAME Hours X Rate Hours X Rate Hours BALANCE UOM M H_DECIMAL2 CURRENCY {RULE: {RULE: CODE Output Currency Output Currency DEFAULT: < DEFAULT: < Currency of the given country>} Currency of the given country>} COMMENTS Primary balance Hours balance for Hours X Rate for Hours X Rate Earnings. Earnings. REPORTING Hours NAME CATEGORY Hourly Earnings Earnings Hours NAME BASE BALANCE Hours X Rate TYPE INPUT VALUE Pay Value

Input Values ELEMENT TYPE Hours X Hours X Hours X Hours X Hours X Rate Rate Rate Rate Rate EXCLUSION RULE EXCLUSION RULE VALUE DISPLAY 1 2 3 4 7 SEQUENCE GENERATE DB Y Y Y Y Y ITEMS FLAG HOT DEFAULT N N N N N FLAG MANDATORY X N N N X FLAG NAME Pay Value Hours Rate Multiple Jurisdiction UOM M H_DECI- N N C MAL2 LOOKUP TYPE DEFAULT VALUE DEFAULT VALUE COLUMN

Balance Feeds INPUT VALUE Pay Value Hours BALANCE TYPE Hours X Rate Hours X Rate Hours EXCLUSION RULE SCALE 1 1 BALANCE NAME

Defined Balances BALANCE TYPE DIMENSION EXCLUSION RULE Hours X Rate _CORE_PRS_RUN Hours X Rate _CORE_PRS_PY_PTD Hours X Rate _CORE_PRS_MTD Hours X Rate _CORE_PRS_QTD Hours X Rate _CORE_PRS_YTD Hours X Rate _CORE_PRS_TU_RUN Hours X Rate _CORE_PRS_TU_PY_PTD Hours X Rate _CORE_PRS_TU_YTD Hours X Rate _CORE_ASG_RUN Hours X Rate _CORE_ASG_PY_PTD Hours X Rate _CORE_ASG_MTD Hours X Rate _CORE_ASG_QTD Hours X Rate _CORE_ASG_YTD Hours X Rate _CORE_ASG_TU_RUN Hours X Rate _CORE_ASG_TU_PY_PTD Hours X Rate _CORE_ASG_TU_YTD Hours X Rate _CORE_PRS_RUN Hours Hours X Rate _CORE_PRS_PY_PTD Hours Hours X Rate _CORE_PRS_MTD Hours Hours X Rate _CORE_PRS_MTD Hours Hours X Rate _CORE_PRS_YTD Hours Hours X Rate _CORE_PRS_TU_RUN Hours Hours X Rate _CORE_PRS_TU_PY_PTD Hours Hours X Rate _CORE_PRS_TU_YTD Hours Hours X Rate _CORE_ASG_RUN Hours Hours X Rate _CORE_ASG_PY_PTD Hours Hours X Rate _CORE_ASG_MTD Hours Hours X Rate _CORE_ASG_QTD Hours Hours X Rate _CORE_ASG_YTD Hours Hours X Rate _CORE_ASG_TU_RUN Hours Hours X Rate _CORE_ASG_TU_PY_PTD Hours Hours X Rate _CORE_ASG_TU_YTD Hours

Retro Component Usages CREATOR TYPE ET CREATOR Days X Rate RETRO Replacement COMPONENT DEFAULT Y COMPONENT REPROCESS R TYPE

Example Percentage of Earnings Predefined Template:

Element Types CLASSIFICATION {Chosen classification} NAME ADDITIONAL {RULE: Over Ride DEFAULT: N} ENTRY ALLOWED FLAG ADJUSTMENT N ONLY FLAG CLOSED FOR N ENTRY FLAG ELEMENT NAME Percentage of Earnings INDIRECT ONLY N FLAG MULTIPLE {RULE: Multiple Entries DEFAULT: Y} ENTRIES ALLOWED FLAG STARTING TIME {RULE: Hire Process DEFAULT: On Hire Date} DEF ENDING TIME DEF {RULE: Termination Process DEFAULT: On Final Close Date} PROCESS IN RUN Y FLAG RELATIVE 0 PROCESSING PRIORITY PROCESSING {RULE: Recurring Or NonRecurring VALUE: N} TYPE STANDARD LINK {RULE: Availability Rule DEFAULT: N} FLAG INPUT {RULE: Specify Currency DEFAULT: <Currency CURRENCY CODE code for the given country>} OUTPUT {RULE: Output Currency DEFAULT: <Currency CURRENCY CODE of the given country>} ONCE EACH {RULE: Once Per Period DEFAULT: N} PERIOD FLAG USE AT REL {RULE: Process Rel Level DEFAULT: N} LEVEL USE AT TERM {RULE: Process Term Level DEFAULT: N} LEVEL USE AT ASG {RULE: Process Asg Level DEFAULT: Y} LEVEL PRORATION _PERCENTAGE_OF_EARNINGS_PRORATION FORMULA PRORATION {RULE: Proration DEFAULT: N} GROUP TIME DEFINITION ? TYPE TIME DEFINITION ? RECALC EVENT {RULE: Retro DEFAULT: N} GROUP REPORTING NAME ITERATIVE FLAG {RULE: Iterative Information DEFAULT: N} ITERATIVE DEFAULT_GROSSUP FORMULA ITERATIVE 10 PRIORITY PROCESS MODE {RULE: Process Period DEFAULT: S}

Element Type Usages ELEMENT Percentage of Percentage of Percentage of Percentage of TYPE Earnings Earnings Earnings Earnings INCLUSION N N N N FLAG RUN TYPE Separate Process Separate Process NAME Payment Separately Payment - Separately - Non Periodic Non Periodic EXCLUSION {RULE: {RULE: {RULE: {RULE: RULE Recurring Or Recurring Or Recurring Or Recurring Or NonRecur- NonRecur- NonRecur- NonRecur- ring ring ring ring VALUE: R} VALUE: R} VALUE: N} VALUE: N}

Fast Formulas FORMULA _PCT_EARN NAME DESCRIPTION Formula for Percentage of Earnings Template FORMULA /************************************************* TEXT ***************************** FORMULA NAME: ′_ PCT_EARN′ FORMULA TYPE: Payroll DESCRIPTION: This formula applies a percentage to the appropriate regular earnings of an employee according to the following rules in descending priority :: 1) Salary Admin Pay Basis: REGULAR_SALARY * Percentage if Pay Basis not hourly; else ASG_SALARY * Percentage * normal period hours ************************************************** ******************** FORMULA TEXT Formula Results :  template_earning Direct Result for Earnings Amount (ie. Pay Value). mesg Message indicating that this earnings will be deleted for for this assignment. ************************************************** **********************/ /* ===== Defaults Section Begin ===== */ default for ASG_SALARY is 0 default for ASG_SALARY_BASIS_CODE is ′NOT ENTERED′ default for GROSS_PAY_ASG_GRE_RUN is 0 Default for <BASE NAME>_ASG_GRE_RUN is 0 Default for <BASE NAME>_ASG_GRE_YTD is 0 default for HR_WORK_SCHEDULE is ′NOT ENTERED′ default for ASG_HOURS is 0 default for Percentage is 0 default for PAY_PROC_PERIOD_START_DATE is ′0001/01/01 00:00:00′ (DATE) default for PAY_PROC_PERIOD_END_DATE is ′0001/01/02 00:00:00′ (DATE) default for ASG_FREQ_CODE is ′NOT ENTERED′ /* ===== Defaults Section End ===== */ /* ===== Inputs Section Begin ===== */ Inputs are Percentage /* ===== Inputs Section End ===== */ /* ===== Updatable Values Section ===== */ RATE_TABLE =/**/ ′WAGE RATES′ /**/ RATE_TABLE_COLUMN = /**/ ′Wage Rate′ /**/ /* ===== Updatable Values Section ===== */ /* ===== CALCULATION SECTION BEGIN ===== */    IF ASG_SALARY_BASIS_CODE = ′HOURLY′ THEN      ( regular_rate = ASG_SALARY       period hours = Convert_Period_Type(SCL_ASG_MX_WORK_SCHEDULE, ASG_HOURS, ASG_HOURS, ASG_FREQ_CODE, ′PERIOD′, PAY_PROC_PERIOD_START_DATE, PAY_PROC_PERIOD_END_DATE, ASG_FREQ_CODE)      earnings_amount = ROUNDUP(        (Percentage * regular_rate * period_hours / 100) ,2)      )    ELSE      earnings_amount = ROUNDUP(         (Percentage * <BASE NAME>_ASG_GRE_RUN / 100 ),2) /* ===== CALCULATION SECTION END ===== */ /* ===== Returns Section Begin ===== */ RETURN earnings_amount,       mesg,       mesg_err /* ===== Returns Section End ===== */ /* End Program */ FORMULA _PERCENTAGE_OF_EARNINGS_PRORATION NAME DESCRIPTION Formula for Percentage of Earnings Proration Template FORMULA /************************************************* TEXT *********** Description : Formula to calculate pro rated amounts. DISCLAIMER : This formula is strictly for example or prototype  purposes only. You should update the formula to meet your particular  requirements. This formula may contain certain hard  coded values to simplify the use of formulas for proration. A typical example  of proration would be when a new employee starts work in the middle of a  monthly payroll period and your payroll department makes a pro-rata payment  to reflect the proportion of monthly pay to which the employee is entitled.  The prototype formula supplied is only designed to work for payroll  calculations involving proration and should not be used for any other purpose.  Any use of the formula is subject to the terms of the Oracle license agreement  for the HRMS programs and documentation. ************************************************** ***********/ default for prorate start is ′01-JAN-1900′ (date) default for prorate end is ′01-JAN-1900′ (date) default for amount is 0.0 inputs are prorate_start (date), prorate_end (date), annual_amount (number) /**   Prorate_start and prorate_end dates are passed from the payroll engine. These   dates basically represent the dates on which the changes occur in the   deduction amount during the pay period. annual_amount is an input value   created in the element to which this formula will be tied. Here the   assumption is that the user enters the annual deduction amount in the   input value. **/ 1_amount = annual_amount message = ′Proration Start Date ′ || TO_CHAR(prorate_start, ′DD-MON-YYYY′) IF (prorate_start was defaulted) then ( /**   prorate_start date is defaulted when no pro ration occurs. Therefore we   should just return the annual deduction amount divided by 12. **/    1_amount = 1_amount / 12    return 1_amount, message ) else (     1_days = days_between(prorate_end , prorate_start) + 1 /**   1_days stores the number of days between prorate start and prorate   end dates **/     1_days_in_fiscal_year = 365 /**    It is another assumption that a year contains 365 days. Please change    this assumption to take care of leap year. This formula will not work    properly in a leap year. **/     1_amount = (1_amount * 1_days) / 1_days_in_fiscal_year /**   In the above calculation, since 1_amount contains the annual deduction amount,   it is divided by 365 days of the year to get the deduction amount per day.   This amount is then multiplied by the number of days in question to get   the proper deduction amount **/ return 1_amount, message )

Formula Rules SHADOW ELEMENT TYPE Percentage of Earnings FORMULA _PCT_EARN ELEMENT TYPE Percentage of Earnings EXCLUSION RULE RESULT NAME earnings_amount INPUT VALUE Pay Value RESULT RULE TYPE D

Balance Types EXCLUSION RULE ASSIGNMENT N REMUNERATION FLAG BALANCE NANE Percentage of Earnings BALANCE UOM M CURRENCY CODE {RULE: Output Currency DEFAULT: <Currency of the given country>} COMMENTS Primary balance for Percentage of Earnings. REPORTING NAME CATEGORY NAME Earnings BASE BALANCE TYPE INPUT VALUE Pay Value

InputValues ELEMENT TYPE Percentage of Percentage of Percentage of Earnings Earnings Earnings EXCLUSION RULE DISPLAY 1 2 5 SEQUENCE GENERATE DB Y Y Y ITEMS FLAG HOT DEFAULT N N N FLAG MANDATORY X N X FLAG NAME Pay Value Percentage Jurisdiction UOM M M C LOOKUP TYPE DEFAULT VALUE DEFAULT VALUE COLUMN

Balance Feeds INPUT VALUE Pay Value BALANCE Percentage of TYPE Earnings EXCLUSION RULE SCALE 1 BALANCE NAME

Defined Balances BALANCE TYPE DIMENSION EXCLUSION RULE Percentage of _CORE_PRS_RUN Earnings Percentage of _CORE_PRS_PY_PTD Earnings Percentage of _CORE_PRS_MTD Earnings Percentage of _CORE_PRS_QTD Earnings Percentage of _CORE_PRS_YTD Earnings Percentage of _CORE_PRS_TU_RUN Earnings Percentage of _CORE_PRS_TU_PY_PTD Earnings Percentage of _CORE_PRS_TU_YTD Earnings Percentage of _CORE_ASG_RUN Earnings Percentage of _CORE_ASG_PY_PTD Earnings Percentage of _CORE_ASG_MTD Earnings Percentage of _CORE_ASG_QTD Earnings Percentage of _CORE_ASG_YTD Earnings Percentage of _CORE_ASG_TU_RUN Earnings Percentage of _CORE_ASG_TU_PY_PTD Earnings Percentage of _CORE_ASG_TU_YTD Earnings

Retro Component Usages CREATOR TYPE ET CREATOR Percentage of Earnings RETRO Replacement COMPONENT DEFAULT Y COMPONENT REPROCESS R TYPE

Example Flat Amount Deduction Element Predefined Template:

Element Types CLASSIFICATION {Chosen classification} NAME ADDITIONAL ENTRY {RULE: Over Ride DEFAULT: N} ALLOWED FLAG ADJUSTMENT ONLY N FLAG CLOSED FOR ENTRY N FLAG ELEMENT NAME Flat Amount Deduction INDIRECT ONLY FLAG N MULTIPLE ENTRIES {RULE: Multiple Entries DEFAULT: N} ALLOWED FLAG STARTING TIME DEF {RULE: Hire Process DEFAULT: On Hire Date} ENDING TIME DEF {RULE: Termination Process DEFAULT: On Final Close Date} PROCESS IN RUN Y FLAG RELATIVE 0 PROCESSING PRIORITY PROCESSING TYPE {RULE: Recurring Or NonRecurring VALUE: N} STANDARD LINK FLAG {RULE: Availability Rule DEFAULT: N} INPUT CURRENCY {RULE: Specify Currency DEFAULT: <Currency code for the CODE given country>} OUTPUT CURRENCY {RULE: Output Currency DEFAULT: <Currency of the given CODE country>} ONCE EACH PERIOD {RULE: Once Per Period DEFAULT: N} FLAG USE AT REL LEVEL {RULE: Process Rel Level DEFAULT: N} USE AT TERM LEVEL {RULE: Process Term Level DEFAULT: N} USE AT ASG LEVEL {RULE: Process Asg Level DEFAULT: Y} PRORATION _FLAT_AMOUNT_DEDUCTION_PRORATION FORMULA PRORATION GROUP {RULE: Proration DEFAULT: N} TIME DEFINITION ? TYPE TIME DEFINITION ? RECALC EVENT {RULE: Retro DEFAULT: N} GROUP REPORTING NAME ITERATIVE FLAG {RULE: Iterative Information DEFAULT: N} ITERATIVE FORMULA DEFAULT_GROSSUP ITERATIVE PRIORITY 10 PROCESS MODE CLASSIFICATION {Chosen classification} NAME ADDITIONAL {RULE: Over Ride DEFAULT: N} ENTRY ALLOWED FLAG ADJUSTMENT N ONLY FLAG CLOSED FOR N ENTRY FLAG ELEMENT NAME Flat Amount Deduction Special Feature INDIRECT ONLY N FLAG MULTIPLE ENTRIES {RULE: Multiple Entries DEFAULT: N} ALLOWED FLAG STARTING TIME {RULE: Hire Process DEFAULT: On Hire Date} DEF ENDING TIME DEF {RULE: Termination Process DEFAULT: On Final Close Date} PROCESS IN RUN Y FLAG RELATIVE 50 PROCESSING PRIORITY PROCESSING TYPE {RULE: Recurring Or NonRecurring VALUE: N} STANDARD LINK {RULE: Availability Rule DEFAULT: N} FLAG INPUT CURRENCY {RULE: Specify Currency DEFAULT: <Currency code for the CODE given country>} OUTPUT {RULE: Output Currency DEFAULT: <Currency of the given CURRENCY CODE country>} ONCE EACH PERIOD FLAG USE AT REL LEVEL USE AT TERM LEVEL USE AT ASG LEVEL PRORATION ? FORMULA PRORATION ? GROUP TIME DEFINITION ? TYPE TIME DEFINITION ? RECALC EVENT ? GROUP REPORTING NAME SF ITERATIVE FLAG ? ITERATIVE ? FORMULA ITERATIVE ? PRIORITY PROCESS MODE

Element Type Usages ELEMENT Flat Amount Flat Amount Flat Amount Flat Amount TYPE Deduction Deduction Deduction Deduction INCLUSION N N N N FLAG RUN TYPE Separate Payment Process Separately Process Separately - Separate Payment - NAME Non Periodic Non Periodic EXCLUSION {RULE: {RULE: {RULE: {RULE: RULE Recurring Recurring Or Recurring Or Recurring Or Or Non NonRecurring NonRecurring NonRecurring Recurring VALUE:R} VALUE:N} VALUE:N} VALUE:R}

Fast Formulas FORMULA _FLAT_AMOUNT_DEDN NAME DESCRIPTION Flat Amount formula for Deduction Template FORMULA /************************************************* TEXT **************************** FORMULA NAME: _FLAT_AMOUNT_DEDN FORMULA TYPE: Payroll DESCRIPTION: Formula for Flat Amount for Deduction Template. Returns pay value (Amount); ************************************************** ***************************** FORMULA TEXT Formula Results :  dedn_amt Direct Result for Deduction Amount  not_taken Update Deduction Recurring Entry Not Taken  to_arrears Update Deduction Recurring Entry Arrears Contr  set_clear Update Deduction Recurring Entry Clear Arrears  STOP_ENTRY Stop current recurring entry  to_total_owed Update Deduction Recurring Entry Accrued  mesg Message (Warning) ************************************************** *****************************/ /* Database Item Defaults */ default for INSUFFICIENT_FUNDS_TYPE is ‘NOT ENTERED’ /* ===== Database Item Defaults End ===== */ /* ===== Input Value Defaults Begin ===== */ default for Total_Owed is 0 default for Clear_Arrears (text) is ‘N’ default for Amount is 0 /* ===== Input Value Defaults End ===== */ DEFAULT FOR mesg is ‘NOT ENTERED’ /* ===== Inputs Section Begin ===== */ INPUTS ARE Amount  ,Total_Owed  ,Clear_Arrears (text) /* ===== inputs Section End ===== */ dedn_amt = Amount to_total_owed = 0 to_arrears = 0 to_not_taken = 0 total_dedn = 0 insuff_funds_type = INSUFFICIENT_FUNDS_TYPE net_amount = NET_PAY_ASG_GRE_RUN /* ==== Entry ITD Check Begin ==== */ IF ( <BASE_NAME>_ACCRUED_ENTRY_ITD = 0 AND  <BASE_NAME>_ACCRUED_ASG_GRE_ITD <> 0 ) THEN ( to_total_owed = −1 * <BASE_NAME>_ACCRUED_ASG_GRE_ITD + dedn_amt ) IF ( <BASE_NAME>_ARREARS_ENTRY_ITD = 0 AND  <BASE_NAME>_ARREARS_ASG_GRE_ITD <> 0 ) THEN ( to_arrears = −1 * <BASE_NAME>_ARREARS_ASG_GRE_ITD ) /* ==== Entry ITD Check End ==== */ /* ===== Arrears Section Begin ===== */ IF Clear_Arrears = ‘Y’ THEN ( to_arrears = −1 * <BASE_NAME>_ARREARS_ASG_GRE_ITD set_clear = ‘No’ ) ELSE ( IF <BASE_NAME>_ARREARS_ASG_GRE_ITD <> 0 THEN ( to_arrears = −1 * <BASE_NAME>_ARREARS_ASG_GRE_ITD ) ) IF ( net_amount − dedn_amt < 0 ) THEN ( IF insuff_funds_type = ‘ERRA’ THEN ( mesg = GET_MESG(‘PAY’,‘PAY_INSUFF_FUNDS_FOR_DED’) RETURN mesg ) ) /* When there is no arrears */ IF ( insuff_funds_type = ‘PD’ OR  insuff_funds_type = ‘NONE’ ) THEN ( IF ( net_amount − dedn_amt >= 0 ) THEN ( to_arrears = 0 to_not_taken = 0 dedn_amt = dedn_amt ) ELSE ( IF ( insuff_funds_type = ‘PD’ ) THEN ( to_arrears = 0 to_not_taken = dedn_amt − net_amount dedn_amt = net_amount ) ELSE ( to_arrears = 0 to_not_taken = dedn_amt dedn_amt = 0 ) ) ) ELSE /* When there is arrears */ ( IF ( net_amount <= 0 ) THEN ( to_arrears = dedn_amt to_not_taken = dedn_amt dedn_amt = 0 ) ELSE ( total_dedn = dedn_amt + <BASE_NAME>_ARREARS_ASG_GRE_ITD IF ( net_amount >= total_dedn ) THEN ( to_arrears = −1 * <BASE_NAME>_ARREARS_ASG_GRE_ITD to_not_taken = 0 dedn_amt = total_dedn ) ELSE ( IF ( insuff_funds_type = ‘APD’ ) THEN ( to_arrears = total_dedn − net_amount to_arrears = to_arrears − <BASE_NAME>_ARREARS_ASG_GRE_ITD IF ( net_amount >= dedn_amt ) THEN ( to_not_taken = 0 ) ELSE ( to_not_taken = to_arrears ) dedn_amt = net_amount ) ELSE ( IF ( net_amount >= dedn_amt ) THEN ( to_arrears = 0 to_not_taken = 0 dedn_amt = dedn_amt ) ELSE ( to_arrears = dedn_amt to_not_taken = dedn_amt dedn_amt = 0 ) ) ) ) ) /* ===== Arrears Section End ===== */ /* ===== Stop Rule Section Begin ===== */ to_total_owed = dedn_amt IF Total_Owed WAS NOT DEFAULTED THEN ( total_accrued = dedn_amt + <BASE_NAME>_ACCRUED_ASG_GRE_ITD IF total_accrued >= Total_Owed THEN ( dedn_amt = Total_Owed − <BASE_NAME>_ACCRUED_ASG_GRE_ITD  /* The total has been reached - the return will stop the entry under  these conditions. Also, zero out Accrued balance. */  to_total_owed = −1 * <BASE_NAME>_ACCRUED_ASG_GRE_ITD  STOP_ENTRY = ‘Y’  mesg = GET_MESG (‘PAY’,‘PAY_STOPPED_ENTRY’, ‘BASE_NAME’,‘<BASE_NAME>’)  ) ) /* ===== Stop Rule Section End ===== */ RETURN dedn_amt,  to_not_taken,  to_arrears,  to_total_owed,  STOP_ENTRY,  set_clear,  mesg /* End Formula Text */ Fast Formulas FORMULA _FLAT_AMOUNT_DEDUCTION_PRORATION NAME DESCRIPTION Formula for Flat Amount Deduction Proration Template FORMULA /************************************************** TEXT ********** Description : Formula to calculate pro rated amounts. DISCLAIMER : This formula is strictly for example or prototype  purposes only. You should update the formula to meet your particular  requirements. This formula may contain certain hard  coded values to simplify the use of formulas for proration. A typical example  of proration would be when a new employee starts work in the middle of a  monthly payroll period and your payroll department makes a pro-rata payment  to reflect the proportion of monthly pay to which the employee is entitled.  The prototype formula supplied is only designed to work for payroll  calculations involving proration and should not be used for any other purpose.  Any use of the formula is subject to the terms of the Oracle license agreement  for the HRMS programs and documentation. *************************************************** **********/ default for prorate_start is ‘01-JAN-1900’ (date) default for prorate_end is ‘01-JAN-1900’ (date) default for amount is 0.0 inputs are prorate_start (date), prorate_end (date), annual_amount (number) /** Prorate_start and prorate_end dates are passed from the payroll engine. These dates basically represent the dates on which the changes occur in the deduction amount during the pay period. annual_amount is an input value created in the element to which this formula will be tied. Here the assumption is that the user enters the annual deduction amount in the input value. **/ l_amount = annual_amount message = ‘Proration Start Date ’ || TO_CHAR(prorate_st art, ‘DD-MON-YYYY’) IF (prorate_start was defaulted) then ( /** prorate_start date is defaulted when no pro ration occurs. Therefore we should just return the annual deduction amount divided by 12. **/ l_amount = l_amount / 12 return l_amount, message ) else (  l_days = days_between (prorate_end , prorate_start) + 1 /** l_days stores the number of days between prorate start and prorate end dates **/  l_days_in_fiscal_year = 365 /** It is another assumption that a year contains 365 days. Please change this assumption to take care of leap year. This formula will not work properly in a leap year. **/ l_amount = (l_amount * l_days) / l_days_in_fiscal_year /** In the above calculation, since l_amount contains the annual deduction amount, it is divided by 365 days of the year to get the deduction amount per day. This amount is then multiplied by the number of days in question to get the proper deduction amount **/ return l_amount, message )

Formula Rules SHADOW Flat Amount Deduction Flat Amount Deduction Flat Amount Deduction ELEMENT TYPE FORMULA _FLAT_AMOUNT_DEDN _FLAT_AMOUNT_DEDN _FLAT_AMOUNT_DEDN ELEMENT Flat Amount Deduction Flat Amount Deduction Flat Amount Deduction TYPE Special Feature Special Feature EXCLUSION {RULE:Earning {RULE:Total Reached RULE Threshold VALUE:N} VALUE:ERRA}, {RULE:Earning Threshold VALUE:NONE}, {RULE:Earning Threshold VALUE:PD} RESULT dedn_amt to_arrears to_total_owed NAME INPUT Pay Value Arrears Contr Accrued VALUE RESULT D I I RULE TYPE Formula Rules SHADOW Flat Amount Deduction Flat Amount Deduction Flat Amount Deduction ELEMENT TYPE FORMULA _FLAT_AMOUNT_DEDN _FLAT_AMOUNT_DEDN _FLAT_AMOUNT_DEDN ELEMENT Flat Amount Deduction Flat Amount Deduction Flat Amount Deduction TYPE Special Feature EXCLUSION {RULE:Total {RULE:Earning RULE Reached Threshold VALUE:N} VALUE:ERRA}, {RULE:Earning Threshold VALUE:NONE}, {RULE:Earning Threshold VALUE:PD} RESULT STOP_ENTRY set_clear to_not_taken NAME INPUT VALUE Clear Arrears Not Taken RESULT RULE S U I TYPE

Balance Types EXCLUSION RULE ASSIGNMENT N N N N REMUNERATION FLAG BALANCE NAME Flat Amount Flat Amount Flat Amount Flat Amount Deduction Deduction Deduction Deduction Not Taken Accrued Arrears BALANCE UOM M M M M CURRENCY {RULE: {RULE: {RULE: {RULE:Output CODE Output Output Output Currency Currency Currency Currency DEFAULT:<Currency DEFAULT:< DEFAULT:< DEFAULT:< of the given Currency of Currency of Currency of country>} the given the given the given country>} country>} country>} COMMENTS Primary Accrued Arrears Not Taken balance balance for balance for balance for for Flat Amount Flat Amount Flat Amount Flat Amount Deductions. Deductions. Deductions. Deductions. REPORTING Accrued Arrears Not Taken NAME CATEGORY Deductions Wages Wages Wages NAME BASE BALANCE Flat Amount Flat Amount Flat Amount TYPE Deduction Deduction Deduction INPUT VALUE Pay Value

Input Values ELEMENT Flat Amount Flat Amount Flat Amount Flat Amount Flat Amount TYPE Deduction Deduction Deduction Deduction Deduction Special Features EXCLUSION {RULE:Earning {RULE: RULE Threshold Total VALUE:ERRA}, Reached {RULE:Earning VALUE:N} Threshold VALUE:NONE}, {RULE:Earning Threshold VALUE:PD} EXCLUSION RULE VALUE DISPLAY 1 2 3 4 1 SEQUENCE GENERATE Y Y Y Y Y DB ITEMS FLAG HOT DEFAULT N N N N N FLAG MANDATORY X N N N X FLAG NAME Pay Value Amount Clear Arrears Total Owed Pay Value UOM M M C M M LOOKUP YES_NO TYPE DEFAULT N VALUE DEFAULT VALUE COLUMN

Input Values ELEMENT Flat Amount Deduction Flat Amount Deduction Flat Amount Deduction TYPE Special Features Special Features Special Features EXCLUSION {RULE: Total {RULE:Earning Threshold RULE Reached VALUE:ERRA}, VALUE:N} {RULE:Earning Threshold VALUE:NONE}, {RULE:Earning Threshold VALUE:PD} DISPLAY 2 3 4 SEQUENCE GENERATE Y Y Y DB ITEMS FLAG HOT DEFAULT N N N FLAG MANDATORY X X X FLAG NAME Accrued Not Taken Arrears Contr UOM M M M LOOKUP TYPE DEFAULT VALUE DEFAULT VALUE COLUMN

Balance Feeds INPUT Pay Value Arrears Contr Not Taken Accrued VALUE BALANCE Flat Amount Flat Amount Flat Amount Flat Amount TYPE Deduction Deduction Deduction Not Deduction Arrears Taken Accrued EXCLUSION {RULE:Earning {RULE:Earning RULE Threshold Threshold VALUE:ERRA}, VALUE:ERRA}, {RULE:Earning {RULE:Earning Threshold Threshold VALUE:NONE}, VALUE:NONE}, {RULE:Earning {RULE:Earning Threshold Threshold VALUE:PD} VALUE:PD} SCALE 1 1 1 1 BALANCE Pay Value Arrears Contr Not Taken Accrued NAME

Defined Balances EXCLUSION BALANCE TYPE DIMENSION RULE Flat Amount _CORE_PRS_RUN Deduction Flat Amount _CORE_PRS_PY_PTD Deduction Flat Amount _CORE_PRS_MTD Deduction Flat Amount _CORE_PRS_QTD Deduction Flat Amount _CORE_PRS_YTD Deduction Flat Amount _CORE_PRS_TU_RUN Deduction Flat Amount _CORE_PRS_TU_PY_PTD Deduction Flat Amount _CORE_PRS_TU_YTD Deduction Flat Amount _CORE_ASG_RUN Deduction Flat Amount _CORE_ASG_PY_PTD Deduction Flat Amount _CORE_ASG_MTD Deduction Flat Amount _CORE_ASG_QTD Deduction Flat Amount _CORE_ASG_YTD Deduction Flat Amount _CORE_ASG_TU_RUN Deduction Flat Amount _CORE_ASG_TU_PY_PTD Deduction Flat Amount _CORE_ASG_TU_YTD Deduction Flat Amount _CORE_ASG_LTD Deduction Flat Amount _CORE_ASG_TU_LTD Deduction Flat Amount _CORE_PRS_LTD Deduction Flat Amount _CORE_PRS_TU_LTD Deduction Flat Amount _CORE_PRS_RUN Deduction Arrears Flat Amount _CORE_PRS_PY_PTD Deduction Arrears Flat Amount _CORE_PRS_MTD Deduction Arrears Flat Amount _CORE_PRS_QTD Deduction Arrears Flat Amount _CORE_PRS_YTD Deduction Arrears Flat Amount _CORE_PRS_TU_RUN Deduction Arrears Flat Amount _CORE_PRS_TU_PY_PTD Deduction Arrears Flat Amount _CORE_PRS_TU_YTD Deduction Arrears Flat Amount _CORE_ASG_RUN Deduction Arrears Flat Amount _CORE_ASG_PY_PTD Deduction Arrears Flat Amount _CORE_ASG_MTD Deduction Arrears Flat Amount _CORE_ASG_QTD Deduction Arrears Flat Amount _CORE_ASG_YTD Deduction Arrears Flat Amount _CORE_ASG_TU_RUN Deduction Arrears Flat Amount _CORE_ASG_TU_PY_PTD Deduction Arrears Flat Amount _CORE_ASG_TU_YTD Deduction Arrears Flat Amount _CORE_ASG_LTD Deduction Arrears Flat Amount _CORE_ASG_TU_LTD Deduction Arrears Flat Amount _CORE_ASG_EE_LTD Deduction Arrears Flat Amount _CORE_PRS_LTD Deduction Arrears Flat Amount _CORE_PRS_TU_LTD Deduction Arrears Flat Amount _CORE_PRS_RUN Deduction Not Taken Flat Amount _CORE_PRS_PY_PTD Deduction Not Taken Flat Amount _CORE_PRS_MTD Deduction Not Taken Flat Amount _CORE_PRS_QTD Deduction Not Taken Flat Amount _CORE_PRS_YTD Deduction Not Taken Flat Amount _CORE_PRS_TU_RUN Deduction Not Taken Flat Amount _CORE_PRS_TU_PY_PTD Deduction Not Taken Flat Amount _CORE_PRS_TU_YTD Deduction Not Taken Flat Amount _CORE_ASG_RUN Deduction Not Taken Flat Amount _CORE_ASG_PY_PTD Deduction Not Taken Flat Amount _CORE_ASG_MTD Deduction Not Taken Flat Amount _CORE_ASG_QTD Deduction Not Taken Flat Amount _CORE_ASG_YTD Deduction Not Taken Flat Amount _CORE_ASG_TU_RUN Deduction Not Taken Flat Amount _CORE_ASG_TU_PY_PTD Deduction Not Taken Flat Amount _CORE_ASG_TU_YTD Deduction Not Taken Flat Amount _CORE_ASG_LTD Deduction Not Taken Flat Amount _CORE_ASG_TU_LTD Deduction Not Taken Flat Amount _CORE_PRS_LTD Deduction Not Taken Flat Amount _CORE_PRS_TU_LTD Deduction Not Taken Flat Amount _CORE_PRS_RUN Deduction Accrued Flat Amount _CORE_PRS_PY_PTD Deduction Accrued Flat Amount _CORE_PRS_MTD Deduction Accrued Flat Amount _CORE_PRS_QTD Deduction Accrued Flat Amount _CORE_PRS_YTD Deduction Accrued Flat Amount _CORE_PRS_TU_RUN Deduction Accrued Flat Amount _CORE_PRS_TU_PY_PTD Deduction Accrued Flat Amount _CORE_PRS_TU_YTD Deduction Accrued Flat Amount _CORE_ASG_RUN Deduction Accrued Flat Amount _CORE_ASG_PY_PTD Deduction Accrued Flat Amount _CORE_ASG_MTD Deduction Accrued Flat Amount _CORE_ASG_QTD Deduction Accrued Flat Amount _CORE_ASG_YTD Deduction Accrued Flat Amount _CORE_ASG_TU_RUN Deduction Accrued Flat Amount _CORE_ASG_TU_PY_PTD Deduction Accrued Flat Amount _CORE_ASG_TU_YTD Deduction Accrued Flat Amount _CORE_ASG_LTD Deduction Accrued Flat Amount _CORE_ASG_TU_LTD Deduction Accrued Flat Amount _CORE_ASG_EE_LTD Deduction Accrued Flat Amount _CORE_PRS_LTD Deduction Accrued Flat Amount _CORE_PRS_TU_LTD Deduction Accrued

Retro Component Usages CREATOR TYPE ET CREATOR Flat Amount Deduction RETRO Replacement COMPONENT DEFAULT Y COMPONENT REPROCESS R TYPE

Example Percentage of Deduction Predefined Template:

Element Types CLASSIFICATION {Chosen classification} NAME ADDITIONAL ENTRY {RULE:Over Ride DEFAULT:N} ALLOWED FLAG ADJUSTMENT ONLY N FLAG CLOSED FOR ENTRY N FLAG ELEMENT NAME Percentage Deduction Special Feature INDIRECT ONLY N FLAG MULTIPLE ENTRIES {RULE:Multiple Entries DEFAULT:N} ALLOWED FLAG STARTING TIME DEF {RULE: Hire Process DEFAULT:On Hire Date} ENDING TIME DEF {RULE: Termination Process DEFAULT:On Final Close Date} PROCESS IN RUN Y FLAG RELATIVE 50 PROCESSING PRIORITY PROCESSING TYPE {RULE:Recurring Or NonRecurring VALUE:N} STANDARD LINK {RULE:Availability Rule DEFAULT:N} FLAG INPUT CURRENCY {RULE:Specify Currency DEFAULT:<Currency code for the CODE given country>} OUTPUT CURRENCY {RULE:Output Currency DEFAULT:<Currency of the given CODE country>} ONCE EACH PERIOD FLAG USE AT REL LEVEL USE AT TERM LEVEL USE AT ASG LEVEL PRORATION _PERCENTAGE_OF_DEDUCTION_PRORATION FORMULA PRORATION GROUP {RULE:Proration DEFAULT:N} TIME DEFINITION ? TYPE TIME DEFINITION ? RECALC EVENT {RULE:Retro DEFAULT:N} GROUP REPORTING NAME SF ITERATIVE FLAG {RULE:Iterative Information DEFAULT:N} ITERATIVE FORMULA DEFAULT_GROSSUP ITERATIVE PRIORITY 10 PROCESS MODE

Element Type Usages ELEMENT TYPE INCLUSION FLAG RUN TYPE NAME EXCLUSION RULE

Fast Formulas FORMULA _PCT_DEDN NAME DESCRIPTION Percentage Deduction formula for Deduction Template FORMULA /************************************************* TEXT **************************** FORMULA NAME: _PCT_DEDN FORMULA TYPE: Payroll DESCRIPTION: Formula for Flat Amount for Deduction Template. Returns pay value (Amount); ************************************************** ***************************** FORMULA TEXT Formula Results :  dedn_amt Direct Result for Deduction Amount  not_taken Update Deduction Recurring Entry Not Taken  to_arrears Update Deduction Recurring Entry Arrears Contr  set_clear Update Deduction Recurring Entry Clear Arrears  STOP_ENTRY Stop current recurring entry  to_total_owed Update Deduction Recurring Entry Accrued  mesg Message (Warning) ************************************************** *****************************/ /* Database Item Defaults */ default for INSUFFICIENT_FUNDS_TYPE is ‘NOT ENTERED’ /* ===== Database Item Defaults End ===== */ /* ===== Input Value Defaults Begin ===== */ DEFAULT FOR Total_Owed IS 0 DEFAULT FOR Clear_Arrears (text) IS ‘N’ DEFAULT FOR Percentage IS 0 /* ===== Input Value Defaults End ===== */ DEFAULT FOR mesg IS ‘NOT ENTERED’ /* ===== Inputs Section Begin ===== */ INPUTS ARE Percentage  ,Total_Owed  ,Clear_Arrears (text) /* ===== Inputs Section End ===== */ IF Percentage WAS DEFAULTED THEN (  mesg = GET_MESG(‘PAY’,‘PAY_NO_VALUE_TO_CALC_DED’ ,‘BASE_NAME’,‘<BASE_NAME>’)  RETURN mesg ) ELSE ( dedn_amt = (Percentage * <BASE_NAME>_ELIGIBLE_COMP_ASG_GRE_RUN / 100) /* ---------------------------------------------- ----------------------- CUSTOMER : The formula is generated with a default to use the Eligible Compensation to calculate % of Earnings. The Eligible Compensation balance is initially defined with the same balance feeds as the Regular Earnings balance. You can modify the earnings basis for this calculation by adding and deleting balance feeds to the <BASE_NAME>_ELIGIBLE_COMP balance. If you want the formula to use another balance of earnings in the run, replace the <BASE_NAME>_ELIGIBLE_COMP_ASG_GRE_RUN database item reference below with the database item for the balance of choice : <BALANCE_NAME_IN_UPPER_CASE/UNDERSCORES>_ASG_GRE_R UN  ------------------------------------------------- -------------------- */ ) to_total_owed = 0 to_arrears = 0 to_not_taken = 0 total_dedn = 0 insuff_funds_type = INSUFFICIENT_FUNDS_TYPE net_amount = NET_PAY_ASG_GRE_RUN /* ==== Entry ITD Check Begin ==== */ IF ( <BASE_NAME>_ACCRUED_ENTRY_ITD = 0 AND  <BASE_NAME>_ACCRUED_ASG_GRE_ITD <> 0 ) THEN ( to_total_owed = −1 * <BASE_NAME>_ACCRUED_ASG_GRE_ITD + dedn_amt ) IF ( <BASE_NAME>_ARREARS_ENTRY_ITD = 0 AND  <BASE_NAME>_ARREARS_ASG_GRE_ITD <> 0 ) THEN ( to_arrears = −1 * <BASE_NAME>_ARREARS_ASG_GRE_ITD ) /* ==== Entry ITD Check End ==== */ /* ===== Arrears Section Begin ===== */ IF Clear_Arrears = ‘Y’ THEN ( to_arrears = −1 * <BASE_NAME>_ARREARS_ASG_GRE_ITD set_clear = ‘No’ ) ELSE ( IF <BASE_NAME>_ARREARS_ASG_GRE_ITD <> 0 THEN ( to_arrears = −1 * <BASE_NAME>_ARREARS_ASG_GRE_ITD ) ) IF ( net_amount − dedn_amt < 0 ) THEN ( IF insuff_funds_type = ‘ERRA’ THEN ( mesg = GET_MESG (‘PAY’,‘PAY_MX_INSUFF_FUNDS_FOR_DED’) RETURN mesg ) ) /* When there is no arrears */ IF ( insuff_funds_type = ‘PD’ OR  insuff_funds_type = ‘NONE’ ) THEN ( IF ( net_amount − dedn_amt >= 0 ) THEN ( to_arrears = 0 to_not_taken = 0 dedn_amt = dedn_amt ) ELSE ( IF ( insuff_funds_type = ‘PD’ ) THEN ( to_arrears = 0 to_not_taken = dedn_amt − net_amount dedn_amt = net_amount ) ELSE ( to_arrears = 0 to_not_taken = dedn_amt dedn_amt = 0 ) ) ) ELSE /* When there is arrears */ ( IF ( net_amount <= 0 ) THEN ( to_arrears = dedn_amt to_not_taken = dedn_amt dedn_amt = 0 ) ELSE ( total_dedn = dedn_amt + <BASE_NAME>_ARREARS_ASG_GRE_ITD IF ( net_amount >= total_dedn ) THEN ( to_arrears = −1 * <BASE_NAME>_ARREARS_ASG_GRE_ITD to_not_taken = 0 dedn_amt = total_dedn ) ELSE ( IF ( insuff_funds_type = ‘APD’ ) THEN ( to_arrears = total_dedn − net_amount to_arrears = to_arrears − <BASE_NAME>_ARREARS_ASG_GRE_ITD IF ( net_amount >= dedn_amt ) THEN ( to_not_taken = 0 ) ELSE ( to_not_taken = to_arrears ) dedn_amt = net_amount ) ELSE ( IF ( net_amount >= dedn_amt ) THEN ( to_arrears = 0 to_not_taken = 0 dedn_amt = dedn_amt ) ELSE ( to_arrears = dedn_amt to_not_taken = dedn_amt dedn_amt = 0 ) ) ) ) ) /* ===== Arrears Section End ===== */ /* ===== Stop Rule Section Begin ===== */ to_total_owed = dedn_amt IF Total_Owed WAS NOT DEFAULTED THEN ( total_accrued = dedn_amt + <BASE_NAME>_ACCRUED_ASG_GRE_ITD IF total_accrued >= Total_Owed THEN ( dedn_amt = Total_Owed − <BASE_NAME>_ACCRUED_ASG_GRE_ITD  /* The total has been reached - the return will stop the entry under  these conditions. Also, zero out Accrued balance. */  to_total_owed = −1 * <BASE_NAME>_ACCRUED_ASG_GRE_ITD  STOP_ENTRY = ‘Y’  mesg = GET_MESG (‘PAY’,‘PAY_MX_STOPPED_ENTRY’, ‘BASE_NAME’,‘<BASE_NAME>’)  ) ) /* ===== Stop Rule Section End ===== */  RETURN dedn_amt, to_not_taken, to_arrears, to_total_owed, STOP_ENTRY, set_clear, mesg /* End Formula Text */ Fast Formulas FORMULA _PERCENTAGE_OF_DEDUCTION_PRORATION NAME DESCRIPTION Formula for Percentage of Deduction Proration Template FORMULA /************************************************* TEXT *********** Description : Formula to calculate pro rated amounts. DISCLAIMER : This formula is strictly for example or prototype  purposes only. You should update the formula to meet your particular  requirements. This formula may contain certain hard  coded values to simplify the use of formulas for proration. A typical example  of proration would be when a new employee starts work in the middle of a  monthly payroll period and your payroll department makes a pro-rata payment  to reflect the proportion of monthly pay to which the employee is entitled.  The prototype formula supplied is only designed to work for payroll  calculations involving proration and should not be used for any other purpose.  Any use of the formula is subject to the terms of the Oracle license agreement  for the HRMS programs and documentation. ************************************************** ***********/ default for prorate_start is ‘01-JAN-1900’ (date) default for prorate_end is ‘01-JAN-1900’ (date) default for amount is 0.0 inputs are prorate_start (date), prorate_end (date), annual_amount (number) /** Prorate_start and prorate_end dates are passed from the payroll engine. These dates basically represent the dates on which the changes occur in the deduction amount during the pay period. annual_amount is an input value created in the element to which this formula will be tied. Here the assumption is that the user enters the annual deduction amount in the input value. **/ l_amount = annual_amount message = ‘Proration Start Date’ || TO_CHAR(prorate_start, ‘DD-MON-YYYY’) IF (prorate_start was defaulted) then ( /** prorate_start date is defaulted when no pro ration occurs. Therefore we should just return the annual deduction amount divided by 12. **/ l_amount = l_amount / 12 return l_amount, message ) else (  l_days = days_between (prorate_end , prorate_start ) + 1 /** l_days stores the number of days between prorate start and prorate end dates **/  l_days_in_fiscal_year = 365 /** It is another assumption that a year contains 365 days. Please change this assumption to take care of leap year. This formula will not work properly in a leap year. **/  l_amount = (l_amount * l_days) / l_days_in_fiscal_year /** In the above calculation, since l_amount contains the annual deduction amount, it is divided by 365 days of the year to get the deduction amount per day. This amount is then multiplied by the number of days in question to get the proper deduction amount **/ return l_amount, message )

Formula Rules SHADOW Percentage Deduction Percentage Deduction Percentage Deduction ELEMENT TYPE FORMULA _PCT_DEDN _PCT_DEDN _PCT_DEDN ELEMENT Percentage Deduction Percentage Deduction Percentage Deduction TYPE Special Feature Special Feature EXCLUSION {RULE:Total Reached {RULE:Earning Threshold RULE VALUE:N} VALUE:ERRA}, {RULE:Earning Threshold VALUE:NONE}, {RULE:Earning Threshold VALUE:PD} RESULT dedn_amt to_total_owed to_arrears NAME INPUT Pay Value Accrued Arrears Contr VALUE RESULT D I I RULE TYPE Formula Rules SHADOW Percentage Deduction Percentage Deduction Percentage Deduction ELEMENT TYPE FORMULA _PCT_DEDN _PCT_DEDN _PCT_DEDN ELEMENT Percentage Deduction Percentage Deduction Percentage Deduction TYPE Special Feature EXCLUSION {RULE:Earning Threshold RULE VALUE:ERRA}, {RULE:Earning Threshold VALUE:NONE}, {RULE:Earning Threshold VALUE:PD} RESULT to_not_taken STOP_ENTRY set_clear NAME INPUT VALUE Not Taken Clear Arrears RESULT I S U RULE TYPE

Balance Types EXCLUSION N N N N N RULE ASSIGNMENT Percentage Percentage Percentage Percentage Percentage REMUNERATION Deduction Deduction Deduction Deduction Deduction FLAG Eligible Accrued Arrears Not Taken Comp BALANCE NAME M M M M M BALANCE UOM {RULE: {RULE: {RULE: {RULE: {RULE: Output Output Output Output Output Currency Currency Currency Currency Currency DEFAULT:< DEFAULT:< DEFAULT:< DEFAULT:< DEFAULT:< Currency of Currency of Currency of Currency of Currency of the given the given the given the given the given country>} country>} country>} country>} country>} CURRENCY Primary Eligible Accrued Arrears Not Taken CODE balance for Comp. balance for balance for balance for Percentage balance for Percentage Percentage Percentage Deductions. Percentage Deduction. Deduction. Deduction. Deduction. COMMENTS Eligible Accrued Arrears Not Taken Comp REPORTING Deductions Wages Wages Wages Wages NAME CATEGORY Percentage Percentage Percentage Percentage NAME Deduction Deduction Deduction Deduction BASE BALANCE Pay Value TYPE INPUT VALUE N N N N N Input Values ELEMENT Percentage Percentage Percentage Percentage Percentage TYPE Deduction Deduction Deduction Deduction Deduction Special Features EXCLUSION {RULE:Earning {RULE:Total RULE Threshold Reached VALUE:ERRA}, VALUE:N} {RULE:Earning Threshold VALUE:NONE}, {RULE:Earning Threshold VALUE:PD} DISPLAY 1 2 3 4 1 SEQUENCE GENERATE Y Y Y Y Y DB ITEMS FLAG HOT N N N N N DEFAULT FLAG MANDATORY X N N N X FLAG NAME Pay Value Percentage Clear Arrears Total Owed Pay Value UOM M M C M M LOOKUP YES_NO TYPE DEFAULT N VALUE DEFAULT VALUE COLUMN Input Values ELEMENT Percentage Deduction Percentage Deduction Percentage Deduction TYPE Special Features Special Features Special Features EXCLUSION {RULE:Total {RULE:Earning Threshold RULE Reached VALUE:ERRA}, {RULE:Earning VALUE:N} Threshold VALUE:NONE}, {RULE:Earning Threshold VALUE:PD} EXCLUSION N N RULE VALUE DISPLAY 2 3 4 SEQUENCE GENERATE Y Y Y DB ITEMS FLAG HOT N N N DEFAULT FLAG MANDATORY X X X FLAG NAME Accrued Not Taken Arrears Contr UOM M M M LOOKUP TYPE DEFAULT VALUE DEFAULT VALUE COLUMN

Balance Feeds INPUT Pay Value Arrears Contr Accrued Not Taken VALUE BALANCE Percentage Percentage Percentage Percentage TYPE Deduction Deduction Deduction Deduction Arrears Accrued Not Taken EXCLUSION RULE SCALE 1 1 1 1 BALANCE Pay Value Arrears Contr Accrued Not Taken NAME

Defined Balances BALANCE TYPE DIMENSION EXCLUSION RULE Percentage Deduction _CORE_PRS_RUN Percentage Deduction _CORE_PRS_PY_PTD Percentage Deduction _CORE_PRS_MTD Percentage Deduction _CORE_PRS_QTD Percentage Deduction _CORE_PRS_YTD Percentage Deduction _CORE_PRS_TU_RUN Percentage Deduction _CORE_PRS_TU_PY_PTD Percentage Deduction _CORE_PRS_TU_YTD Percentage Deduction _CORE_ASG_RUN Percentage Deduction _CORE_ASG_PY_PTD Percentage Deduction _CORE_ASG_MTD Percentage Deduction _CORE_ASG_QTD Percentage Deduction _CORE_ASG_YTD Percentage Deduction _CORE_ASG_TU_RUN Percentage Deduction _CORE_ASG_TU_PY_PTD Percentage Deduction _CORE_ASG_TU_YTD Percentage Deduction _CORE_ASG_LTD Percentage Deduction _CORE_ASG_TU_LTD Percentage Deduction _CORE_PRS_LTD Percentage Deduction _CORE_PRS_TU_LTD Percentage Deduction _CORE_PRS_RUN Accrued Percentage Deduction _CORE_PRS_PY_PTD Accrued Percentage Deduction _CORE_PRS_MTD Accrued Percentage Deduction _CORE_PRS_QTD Accrued Percentage Deduction _CORE_PRS_YTD Accrued Percentage Deduction _CORE_PRS_TU_RUN Accrued Percentage Deduction _CORE_PRS_TU_PY_PTD Accrued Percentage Deduction _CORE_PRS_TU_YTD Accrued Percentage Deduction _CORE_ASG_RUN Accrued Percentage Deduction _CORE_ASG_PY_PTD Accrued Percentage Deduction _CORE_ASG_MTD Accrued Percentage Deduction _CORE_ASG_QTD Accrued Percentage Deduction _CORE_ASG_YTD Accrued Percentage Deduction _CORE_ASG_TU_RUN Accrued Percentage Deduction _CORE_ASG_TU_PY_PTD Accrued Percentage Deduction _CORE_ASG_TU_YTD Accrued Percentage Deduction _CORE_ASG_LTD Accrued Percentage Deduction _CORE_ASG_TU_LTD Accrued Percentage Deduction _CORE_ASG_EE_LTD Accrued Percentage Deduction _CORE_PRS_LTD Accrued Percentage Deduction _CORE_PRS_TU_LTD Accrued Percentage Deduction _CORE_PRS_RUN Eligible Comp Percentage Deduction _CORE_PRS_PY_PTD Eligible Comp Percentage Deduction _CORE_PRS_MTD Eligible Comp Percentage Deduction _CORE_PRS_QTD Eligible Comp Percentage Deduction _CORE_PRS_YTD Eligible Comp Percentage Deduction _CORE_PRS_TU_RUN Eligible Comp Percentage Deduction _CORE_PRS_TU_PY_PTD Eligible Comp Percentage Deduction _CORE_PRS_TU_YTD Eligible Comp Percentage Deduction _CORE_ASG_RUN Eligible Comp Percentage Deduction _CORE_ASG_PY_PTD Eligible Comp Percentage Deduction _CORE_ASG_MTD Eligible Comp Percentage Deduction _CORE_ASG_QTD Eligible Comp Percentage Deduction _CORE_ASG_YTD Eligible Comp Percentage Deduction _CORE_ASG_TU_RUN Eligible Comp Percentage Deduction _CORE_ASG_TU_PY_PTD Eligible Comp Percentage Deduction _CORE_ASG_TU_YTD Eligible Comp Percentage Deduction _CORE_ASG_LTD Eligible Comp Percentage Deduction _CORE_ASG_TU_LTD Eligible Comp Percentage Deduction _CORE_PRS_LTD Eligible Comp Percentage Deduction _CORE_PRS_TU_LTD Eligible Comp Percentage Deduction _CORE_PRS_RUN Arrears Percentage Deduction _CORE_PRS_PY_PTD Arrears Percentage Deduction _CORE_PRS_MTD Arrears Percentage Deduction _CORE_PRS_QTD Arrears Percentage Deduction _CORE_PRS_YTD Arrears Percentage Deduction _CORE_PRS_TU_RUN Arrears Percentage Deduction _CORE_PRS_TU_PY_PTD Arrears Percentage Deduction _CORE_PRS_TU_YTD Arrears Percentage Deduction _CORE_ASG_RUN Arrears Percentage Deduction _CORE_ASG_PY_PTD Arrears Percentage Deduction _CORE_ASG_MTD Arrears Percentage Deduction _CORE_ASG_QTD Arrears Percentage Deduction _CORE_ASG_YTD Arrears Percentage Deduction _CORE_ASG_TU_RUN Arrears Percentage Deduction _CORE_ASG_TU_PY_PTD Arrears Percentage Deduction _CORE_ASG_TU_YTD Arrears Percentage Deduction _CORE_ASG_LTD Arrears Percentage Deduction _CORE_ASG_TU_LTD Arrears Percentage Deduction _CORE_ASG_EE_LTD Arrears Percentage Deduction _CORE_PRS_LTD Arrears Percentage Deduction _CORE_PRS_TU_LTD Arrears Percentage Deduction Not _CORE_PRS_RUN Taken Percentage Deduction Not _CORE_PRS_PY_PTD Taken Percentage Deduction Not _CORE_PRS_MTD Taken Percentage Deduction Not _CORE_PRS_QTD Taken Percentage Deduction Not _CORE_PRS_YTD Taken Percentage Deduction Not _CORE_PRS_TU_RUN Taken Percentage Deduction Not _CORE_PRS_TU_PY_PTD Taken Percentage Deduction Not _CORE_PRS_TU_YTD Taken Percentage Deduction Not _CORE_ASG_RUN Taken Percentage Deduction Not _CORE_ASG_PY_PTD Taken Percentage Deduction Not _CORE_ASG_MTD Taken Percentage Deduction Not _CORE_ASG_QTD Taken Percentage Deduction Not _CORE_ASG_YTD Taken Percentage Deduction Not _CORE_ASG_TU_RUN Taken Percentage Deduction Not _CORE_ASG_TU_PY_PTD Taken Percentage Deduction Not _CORE_ASG_TU_YTD Taken Percentage Deduction Not _CORE_ASG_LTD Taken Percentage Deduction Not _CORE_ASG_TU_LTD Taken Percentage Deduction Not _CORE_PRS_LTD Taken Percentage Deduction Not _CORE_PRS_TU_LTD Taken

Retro Component Usages CREATOR TYPE ET CREATOR Percentage Deduction RETRO Replacement COMPONENT DEFAULT Y COMPONENT REPROCESS R TYPE

Although the present invention has been described in connection with several embodiments, the invention is not intended to be limited to the specific forms set forth herein. On the contrary, it is intended to cover such alternatives, modifications, and equivalents as can be reasonably included within the scope of the invention as defined by the appended claims. 

1. A method comprising: accessing a predefined payroll element template; receiving a template modification value, wherein the template modification value is input by a payroll user in response to a question in a predefined payroll questionnaire; customizing the predefined payroll element template, based upon the template modification value, to create a customized payroll element template; and storing the customized payroll element template, wherein the accessing the predefined payroll element template, the receiving the template modification value, the customizing the predefined payroll element, and the storing the customized payroll element template are performed by a computing device implementing a payroll engine.
 2. The method of claim 1, further comprising creating one or more payroll objects, based upon the customized payroll element template.
 3. The method of claim 1, further comprising providing at least a portion of the predefined payroll questionnaire for display to the payroll user in a payroll wizard window, wherein the same payroll wizard window displays a first set of questions used to customize an earnings template and a second set of questions used to customize a deduction template.
 4. The method of claim 1, wherein the template modification value indicates that a first record of a plurality of records included in the predefined payroll element template should be excluded from the customized payroll element template.
 5. The method of claim 4, wherein the generating the customized payroll element template comprises excluding the first record from the customized payroll element template and excluding one or more additional records from the customized payroll element template, wherein the one or more additional records are children of the first record within a hierarchy, and wherein the predefined payroll element template comprises the first record and the one or more additional records.
 6. The method of claim 1, wherein the template modification value indicates that a first record included in the predefined payroll element template should have a specific default value in the customized payroll element template, wherein the template modification value comprises the specific default value.
 7. The method of claim 1, further comprising receiving a second template modification value, wherein the second template modification value indicates that a second question in the predefined payroll questionnaire should not be displayed to the payroll user during a payroll configuration session to generate either the customized payroll element template or an object created from the customized payroll element template.
 8. The method of claim 1, further comprising receiving a second template modification value, wherein the second rule modification is received in response to user input selecting the predefined payroll template, and wherein the generating the customized payroll template is based upon the second template modification value. 